Как использовать подстановочный знак в маршрутизации администратора в laravel 5

Я использую код ниже для маршрутизации администратора в Laravel.

Route::group(['prefix' => 'admin'], function() {
Route::get('/', 'Admin\AdminController@home');
Route::get('/users/userList', 'Admin\UserController@userList');
Route::get('/users/detail', 'Admin\UserController@detail');
Route::get('/posts/view', 'Admin\PostController@view');
Route::get('/posts/edit', 'Admin\PostController@edit');
Route::get('/posts/add', 'Admin\PostController@add');
});

Это работает нормально для меня. Но когда я добавляю новые функции в код для этого, я должен написать маршрутизацию в файле маршрутов. Например: если я хочу добавить функцию редактирования в пользовательский контроллер, для этого мне нужно добавить новый маршрут, как.

Route:: get ('/ users / edit', 'Admin \ UserController @ edit');

Поэтому я должен добавить маршрутизацию для каждой функции.

Я хочу знать, как использовать подстановочный знак для маршрутизации администратора, чтобы мне приходилось писать маршрутизацию только для контроллера, а не для каждой функции, например.

Route::group(['prefix' => 'admin'], function() {
Route::get('/', 'Admin\AdminController@home');
Route::get('/users/:any', 'Admin\UserController@:any');
Route::get('/posts/:any', 'Admin\PostsController@:any');  
});

подстановочный знак заменяет имя функции и автоматически переадресовывает на эту функцию.

1 ответ

Вы можете использовать неявные контроллеры, которые будут делать то, что вам нужно.

Сначала объявите маршрут для вашего неявного контроллера

Route::controller('users', 'UserController');

Затем на вашем контроллере вы должны следовать соглашению о присвоении имен вашим маршрутам с помощью HTTP-глаголов, используемых для доступа к ним (get для GET, post для POST, any для обоих)

class UserController extends Controller {

    public function getIndex()
    {
        //
    }

    public function postProfile()
    {
        //
    }

    public function anyLogin()
    {
        //
    }

}

Примечание о составленном имени метода из документации

Если действие вашего контроллера содержит несколько слов, вы можете получить доступ к действию, используя синтаксис "тире" в URI. Например, следующее действие контроллера на нашем UserController будет отвечать на users/admin-profile URI:

public function getAdminProfile() {}
Другие вопросы по тегам