如何在Laravel中为路由添加“ admin”前缀?

时间:2019-09-27 14:30:50

标签: php laravel routes user-controls laravel-6

我最近为一个项目安装了laravel 6。

不幸的是,路线无法正常工作。

例如,我将用户引导至具有此路线的页面。

{{ route('user.edit', ['id' => $user->id]) }}.

它应该转到admin/user/{user}/edit

但是它进入了一条未知的路线:

/admin/admin/user//edit?id=1 

我的路线:

Route::group(['namespace' => 'Admin', 'middleware' => ['auth', 'IsVerified'], 'prefix' => 'admin'], function () {
    route::resource('/user', 'UserController');
});

2 个答案:

答案 0 :(得分:3)

您的路线模型绑定不正确,请将您的href更改为此

{{ route('user.edit', ['user' => $user]) }}

结果:

/admin/user/1/edit

在模型上调用Route::resource会返回此网址的修改路线

+--------+-----------+----------------------------+------------------+------------------------------------------------------------------------+-------------------------------------------------+
| Domain | Method    | URI                        | Name             | Action                                                                 | Middleware                                      |
+--------+-----------+----------------------------+------------------+------------------------------------------------------------------------+-------------------------------------------------+
|        | GET|HEAD  | admin/user/{user}/edit     | user.edit        | App\Http\Controllers\Admin\UserController@edit                         | web,auth,IsVerified                             |

请注意,user模型用于绑定,然后getRouteKeyName函数自动获取ID,该函数默认返回id

答案 1 :(得分:1)

  1. 资源的默认占位符是模型“用户”而非“ id”

{{ route('user.edit', ['id' => $user->id]) }}

将成为:

{{ route('user.edit', $user) }}

  1. 您的路线中的双斜线是由内的不必要的斜线引起的

route::resource('/user', 'UserController');

可能只是:

route::resource('user', 'UserController');

  1. 至于双重“ admin”,也许是由于名称空间和分组正确显示在视图中。