2014-12-08 1 views
1

код в моем файле контроллера нечто похожее на это:Laravel контроллера Фильтры: Перед фильтром на конкретный метод не работает

public function __construct(Student $student) 
{ 
    $this->beforeFilter('auth', ['on' => 'show']); 
} 

Это не работает.

Но нижеследующие работы:

public function __construct(Student $student) 
{ 
    $this->beforeFilter('auth', ['except' => 'show']); 
} 

и

public function __construct(Student $student) 
{ 
    $this->beforeFilter('auth', ['only' => 'show']); 
} 

Итак, в чем проблема с 'on'?

ответ

3

Фильтр on запускается, если запрос имеет конкретный HTTP-адрес (так называемый метод запроса). Так варианты post, get, put и т.д.

Для назначения фильтра для действия, except и only все, что вам нужно.

+0

Хорошо. Итак, по вашему методу 'show' is' get students/{id} ', а метод update -' post students/{id} ', поэтому он не работает над методом' show'? – Debiprasad

+0

Правильно. (Кроме того, обновление на самом деле 'put'.' Post' вызывает метод 'store') – lukasgeiter

+0

Да, это' put students/{id} 'для обновления. Теперь мне интересно, почему они используют 'put students/{id}' вместо 'post students/{id}', хотя это не связано с вопросом ;-) – Debiprasad