Я использую код ниже для маршрутизации администратора в 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');
});
подстановочный знак заменяет имя функции, и автоматически перенаправляет на эту функцию.
Вы могли бы использовать неявные контроллеры это будет делать то, что вам нужно.
Сначала объявите маршрут для вашего неявного контроллера
Route::controller('users', 'UserController');
Затем на вашем контроллере вы должны следовать соглашению о присвоении имен вашим маршрутам с помощью HTTP-глаголов, используемых для доступа к ним (получить для получения, сообщение для POST, любой для обоих)
class UserController extends Controller {
public function getIndex()
{
//
}
public function postProfile()
{
//
}
public function anyLogin()
{
//
}
}
Примечание о составленном имени метода из документации
Если действие вашего контроллера содержит несколько слов, вы можете получить доступ к действию, используя синтаксис «тире» в URI. Например, следующее действие контроллера на нашем
UserController
будет отвечать наusers/admin-profile
URI:public function getAdminProfile() {}
Других решений пока нет …