Вы получаете эту ошибку, потому что Route::filter()
был удален из Laravel начиная с> 5.0, поэтому он пытается найти несуществующее Route::$filter
статическое свойство.
Прямо сейчас (версия 5.8, когда я пишу это), лучший способ выполнить эту фильтрацию - использовать middlewares .
Пример ниже:
app/Http/Middleware/CheckRole.php
namespace App\Http\Middleware;
use Auth;
use Closure;
use Redirect;
class CheckRole
{
public function handle($request, Closure $next)
{
if (Auth::user()->role !== 1) {
return Redirect::to('/');
}
return $next($request);
}
}
app/Http/Kernel.php
// Within App\Http\Kernel Class...
protected $routeMiddleware = [
// Other middlewares...
'role' => \App\Http\Middleware\CheckRole::class,
];
web.php
Route->group(['middleware' => 'role'], function() {
Route::get('/user/edit/{id}', 'UsersController@edit');
Route::delete('/users/delete', 'UsersController@destroy');
});
Я полагаю, вы также можете приписать промежуточное программное обеспечение непосредственно в конструкторе вашего контроллера, а не приписывать его в списке маршрутов:
class UsersController extends Controller
{
public function __construct()
{
$this->middleware('role');
}
// ...
}