Я абсолютный новичок в Laravel 5.Laravel 5 промежуточного слоя с параметрами
Я создал класс промежуточного слоя под названием BeforeMiddleware светокопию этого класса ниже.
class BeforeMiddleware {
public function handle($request, Closure $next, $role)
{
if($request->user()->hasRole($role)){
return redirect('/pensions');
}
return $next($request);
}
}
зарегистрирован в качестве kernel.php
protected $routeMiddleware = [
'auth' => 'App\Http\Middleware\Authenticate',
'auth.basic' => 'Illuminate\Auth\Middleware\AuthenticateWithBasicAuth',
'guest' => 'App\Http\Middleware\RedirectIfAuthenticated',
'role' => 'App\Http\Middleware\BeforeMiddleware',
];
модели пользователя ниже
class User extends Model {
public function hasRole($name)
{
return ($this->role->name == $name) ? true : false;
}
public function role()
{
return $this->belongsTo('App\Models\Role');
}
}
и использование в routes.php ниже.
Route:get('/reporting', [ 'middleware' => 'role:Owner', 'uses' => function(){
return 'secret data only be viewable by the owners';
}]);
Если я открываю, что в браузере /reporting
я получаю следующее сообщение об ошибке.
ReflectionException in Container.php line 776:
Class role:Owner does not exist
ОДНАКО если я жесткий код 'Owner'
в ПО промежуточного слоя и удалите параметр $role
, а также удалить его из маршрутов, которые в настоящее время выглядит следующим образом.
BeforeMiddleware.php
class BeforeMiddleware {
public function handle($request, Closure $next, $role)
{
if($request->user()->hasRole('Owner')){
return redirect('/pensions');
}
return $next($request);
}
}
routes.php
Route:get('/reporting', [ 'middleware' => 'role', 'uses' => function(){
return 'secret data only be viewable by the owners';
}]);
работает как хотелось бы ...
поэтому мой вопрос заключается в том, чтобы передать этот параметр при использовании промежуточного ПО для управления маршрутами
Любая идея?
Что делать, если вы используете 'role: owner' в определении маршрута? – Luceos
привет @ Luceos не понял, что ... вы можете разработать ... Я новичок – Amjad
вы используете 'role: Owner' в своем определении маршрута, что происходит, когда вы используете' role: owner', возможно, он предполагает вас хотите использовать класс, если вы пишете буквы в столицах. – Luceos