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

Laravel 在null上调用成员函数middleware(),laravel,routing,middleware,laravel-5.4,Laravel,Routing,Middleware,Laravel 5.4,我在路由Laravel时使用以下中间件: Route::group(['prefix' => 'api/'], function() { Route::resource('admin', 'adminController')->middleware('auth'); Route::resource('profile', 'profileController')->middleware('role'); }); 我在URL中调用“admin”或“profile

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

Route::group(['prefix' => 'api/'], function() {
    Route::resource('admin', 'adminController')->middleware('auth');
    Route::resource('profile', 'profileController')->middleware('role');
}); 
我在URL中调用“admin”或“profile”路径时出现此错误

您的资源控制器很可能未解析为实际控制器。有些东西需要检查

  • 检查您是否有一个adminController,并且类名的大小写是否正确
  • 检查控制器是否位于默认命名空间中,如果不是,请更改控制器命名空间,或向路由添加命名空间属性
  • 检查您的控制器是否在启动时导致被忽略的异常,从而导致控制器为空

这是因为
Route::resource()
不返回任何内容。它是空虚的。它不返回对象

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

使用此选项

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

只需颠倒顺序:

 Route::middleware('scope:clock-in')->resource('clock', 'ClockController');
正如lagbox所说:

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


但是,中间件可以解决此问题。

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

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

我在添加“middleware('auth')”时遇到了这个错误。Hi@ramzi,您是如何将中间件添加到资源的,我的意思是您找到了什么方法将中间件添加到资源。为什么这样做。以前我有
Route::prefix('app')->group(function(){//routes here})->中间件('auth')不起作用,但将中间件调用放在组(function())工作之前。。。。但是为什么呢?非常感谢。