关于路由里中间件使用的问题?
文档中是这样调用的
Route::middleware(['first', 'second'])->group(function () {
Route::get('/', function () {
// 使用 first 和 second 中间件
});
Route::get('user/profile', function () {
// 使用 first 和 second 中间件
});
});
但是我在项目这样会报错..
Route::middleware(['loginAuth'])->group(['prefix' => 'news'], function(){
Route::get('/list','NewsController@list')->name('backstage.news');
...
});
报错信息如下..
Symfony \ Component \ Debug \ Exception \ FatalErrorException (E_UNKNOWN)
Illuminate\Routing\Router::loadRoutes(): Failed opening required 'Array' (include_path='.:/usr/share/php')
但是如果这样写就没问题.
Route::group(['prefix' => 'news','middleware'=>'admin.loginAuth'], function(){
Route::get('/list','NewsController@list')->name('backstage.news');
...
});
不知道是什么原因...
当我们调用
Route
Facades 的静态方法时,Laravel 会从服务容器种解析出router
实例。根据文档 Facades 类参考可知,Route 门面对应的的底层类是 Illuminate\Routing\Router。
在此类中,存在 group 方法,Route::group 调用的就是该方法:
而 middleware 方法并不存在,于是 __call 魔术方法给出一个 RouteRegistrar 的实例,并调用该实例的 middleware 方法,RouteRegistrar 中 group 方法只接受一个闭包参数。