Как использовать подстановочный знак в маршрутизации администратора в 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() {}