在 null 上调用成员函数 middleware()

Call to a member function middleware() on null

我在路由中使用以下中间件Laravel:

Route::group(['prefix' => 'api/'], function() {
    Route::resource('admin', 'adminController')->middleware('auth');
    Route::resource('profile', 'profileController')->middleware('role');
}); 

我在 URL 中调用 'admin' 或 'profile' 路径时出现此错误

很可能您的资源控制器没有解析为实际控制器。要检查的一些事项

  • 检查您是否确实有一个 adminController,class 名称大小写是否正确
  • 检查您的控制器是否在默认命名空间中,如果不是,请更改控制器命名空间,或向您的路由添加命名空间属性
  • 检查您的控制器是否没有在启动时引起异常,该异常被忽略导致您有一个空控制器。

这是因为 Route::resource() 没有 return 任何东西。它的空虚。它不是 return 对象。

Laravel 5.4 - Illuminate\Routing\Router@resource

在 Laravel 5.5(开发中)中,Route::resource() 将 return 创建一个对象以流畅地添加选项。

使用这个

Route::prefix("/dashboard")->middleware(['first','second'])->group(function(){
});

只需颠倒顺序:

 Route::middleware('scope:clock-in')->resource('clock', 'ClockController');

如 lagbox 所述:

Route::resource() does not return anything.

但是中间件可以。

在 Laravel 8.x 中,您可以通过以下方式解决此问题:

Route::group(['middleware' => 'auth','middleware' => 'role'], function () {
  ..........
});