Laravel 5.1: как использовать промежуточное ПО в неявном контроллере?

Я хочу проверить аутентификацию для доступа к контроллеру с именем FoodController, и этот доступ к контроллеру будет разрешен только некоторым пользователям, поэтому я создаю промежуточное ПО и назначаю его неявной маршрутизации контроллера в файле route.php. Но это показывает ошибку —

ErrorException in Router.php line 612:
strpos() expects parameter 1 to be string, array given

Коды приведены ниже:

Route.php

Route::group(['middleware' => 'auth'],function(){
Route::controller('home','HomeController');
Route::controller('food',['middleware' => 'fm', 'uses' => 'FoodController']);
});

kernel.php

protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'fm' => \App\Http\Middleware\FoodAuthentication::class,
];

FoodAuthentication.php

<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Support\Facades\Auth;

class FoodAuthentication
{
/**
* Handle an incoming request.
*
* @param  \Illuminate\Http\Request  $request
* @param  \Closure  $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if (Auth::user()->role!=2) {
return redirect('home');
}
return $next($request);
}
}

Как я могу это исправить?

1

Решение

Вы не можете поместить массив в Route :: controller. Просто добавь

public function __construct() {
$this->middleware('fm');
}

в ваш класс FoodController

1

Другие решения

Решено!
Вы не можете добавить промежуточное ПО напрямую в неявные контроллеры.
Перейдите по ссылке ниже:
http://arunkp.in/adding-middleware-in-implicit-controllers/

0

По вопросам рекламы [email protected]