带名称的 Laravel 资源路由给出错误

2023-12-10

我按照教程添加中间件,在加载页面时检查用户是否是管理员。它适用于普通视图路线,例如

Route::get('/admin/something', 'AdminController@admin_something')
    ->middleware('is_admin')
    ->name('admin');

但我现在有一个资源路由,当我将名称和中间件添加到路由时会出现错误。所以这无需授权即可工作:

Route::resource('thingies', 'ThingyController');

但有了这个:

Route::resource('thingies', 'ThingyController')
    ->middleware('is_admin')
    ->name('admin');

我收到错误:

Symfony \ Component \ Debug \ Exception \ FatalThrowableError (E_RECOVERABLE_ERROR)
Too few arguments to function Illuminate\Routing\PendingResourceRegistration::name(),
  1 passed in /var/www/routes/web.php on line 24 and exactly 2 expected

我需要做什么不同的事情才能将此身份验证添加到资源路由中?


您无法命名您的路线"admin" with ->name('admin');位于资源路由的末尾,因为它涉及一个语句中的所有 CRUD 路由,并且 Laravel 内置系统已经命名了它们。

你的方法很好,只需像这样删除最后一行,它应该可以工作:

Route::resource('thingies', 'ThingyController') ->middleware('is_admin');

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

带名称的 Laravel 资源路由给出错误 的相关文章

随机推荐