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

时间:2017-04-26 21:09:41

标签: laravel routing middleware laravel-5.4

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

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

当我在网址中调用'admin'或'profile'路径时,我收到此错误 enter image description here

5 个答案:

答案 0 :(得分:4)

这是因为Route::resource()没有返回任何内容。它无效。它没有返回一个对象。

Laravel 5.4 - Illuminate\Routing\Router@resource

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

答案 1 :(得分:3)

使用此

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

答案 2 :(得分:1)

只需颠倒顺序:

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

如lagbox所述:

Route::resource()不返回任何内容。

但是中间件可以。

答案 3 :(得分:0)

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

  • 检查您确实有一个adminController,并且类名是正确的
  • 检查您的控制器是否在默认命名空间中,如果没有,请更改控制器命名空间,或者为路由添加命名空间属性
  • 检查您的控制器是否在启动时没有导致异常,因为您有一个空控制器。

答案 4 :(得分:0)

在Laravel 8.x中,您可以使用以下方法解决此问题:

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