Laravel 5 route :: group多个控制器问题

时间:2015-12-15 09:11:33

标签: php laravel laravel-routing

我是Laravel的新手。我有这样的网址example.com/admin/users,一切正常。但是当我想在管理员中制作一条像Route::group(['namespace' => 'Admin'], function() { Route::resource('admin', 'AdminController'); Route::resource('admin/users', 'UsersController'); });这样的路线时,我就有了问题。我的路线看起来像这样:

../admin/create

所以我通过artisan命令工具生成控制器,如果我尝试加载.../admin/users它可以工作,但是如果我尝试加载.../admin/users/create它会显示一个空白页面,但最奇怪的部分是{ {1}}有效。

我是Laravel的新手,所以也许我对路线的理解是错误的,我不能像我想做的那样。提前谢谢。

1 个答案:

答案 0 :(得分:2)

Laravel路由就像贪婪的匹配。如果您有两条这样的路线

,请在您的路线文件中
Route::group(['namespace' => 'Admin'], function() {
    Route::resource('admin', 'AdminController');
    Route::resource('admin/users', 'UsersController');
});

admin/users 等网址的Laravel路由器将与 admin 路由匹配。

  

因此,Laravel路由的一个好建议就是创建路由   降序排列。 The url has most backslashes value 你写的是   你的路线文件&然后减少。

Route::group(['namespace' => 'Admin'], function() {
    Route::resource('admin/users/**/**', '**');
    Route::resource('admin/users/****', '***');
    Route::resource('admin/users', 'UsersController');
    Route::resource('admin', 'AdminController');
});

所以在这里你的解决方案是,将你的第二条路线放到第一个下来

Route::group(['namespace' => 'Admin'], function() {
    Route::resource('admin/users', 'UsersController');
    Route::resource('admin', 'AdminController');
});