2014-12-20 6 views
2

Я использую Laravel 4.2 У меня есть ressourceful маршрут, как это:Laravel Добавить фильтр находчивого маршрут

Route::resource('customers', 'CustomersController'); 

Как я могу добавить фильтр, скажем, «Auth» фильтр для всех соответствующих маршрутов и как ориентироваться только на некоторые из них, скажем, я хочу только фильтровать доступ к указанному маршруту «customers.create».

ответ

1

Вы можете задать фильтр в конструкторе вашего контроллера:

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

Если у вас есть много ресурсов, вы можете использовать группы маршрутов:

Route::group(['before'=>'auth'], function() { 
    Route::resource('customers', 'CustomersController'); 
    // ... another resource ... 
}); 

... и указать beforeFilter в конструкторе каждого контроллера.

ИЛИ:

  • Используйте простой если заявление в routes.php:

    if (Auth::check()) { 
        Route::resource('customers', 'CustomersController'); 
    } else { 
        Route::resource('customers', 'CustomersController', ['except' => ['update', 'store']]); 
    } 
    
  • Создать базовый контроллер а за ресурсы, которые используют один и тот же фильтр и расширяющих его:

    class AuthorizedController extends BaseController { 
        // ... constructor with beforeFilter definition ... 
    } 
    
    class CustomersController extends AuthorizedController { ... } 
    
Смежные вопросы