В Laravel 4 я обнаружил, что если я хочу прикрепить before
фильтровать все маршруты веб-сайта, я могу использовать App::before()
метод, который существует в app/filters.php
файл, как это:
App::before(function($request)
{
// my code here..
});
А потому что я обнаруженный что я не могу использовать Route::currentRouteName()
метод внутри App::before()
метод, я искал другой способ сделать это, и я обнаружил, что я могу создать собственный фильтр в app/filters.php
файл, как это:
Route::filter('my_filter_name', function()
{
// my code to apply on all routes..
});
И в app/routes.php
файл, я написал следующий шаблон на основе фильтра:
Route::when('*', 'my_filter_name');
И он сделал именно то, что я хочу, и я могу использовать Route::currentRouteName()
метод, как я хочу в моем собственном фильтре. Но я заметил (и поправьте меня, если я ошибаюсь), что Route::when()
метод рассмотрения my_filter_name
как before
фильтр. Теперь я хочу знать: как это использовать Route::when()
метод применения before
и / или after
фильтры?
Вы можете сделать это
В ваших маршрутах
Route::group(array('before/after' => 'my_filter_name'), function()
{
Route::get('/', function()
{
// Has my_filter_name Filter
});
Route::get('another', function()
{
// Has my_filter_name Filter
});
});
К сожалению, Laravel не дает возможности добавить шаблон после фильтра с Route::when()
, Правильный способ сделать это — обернуть ваши маршруты в группу:
Route::group(array('after' => 'my_filter_name'), function(){
// routes
});
Если вы действительно не можете использовать группу, есть другое решение. Это немного глупо, хотя …
После регистрации всех маршрутов (обычно внизу routes.php
) вы можете добавить этот код, который проходит по всем маршрутам и добавляет фильтр после каждого маршрута:
foreach(Route::getRoutes() as $route){
$route->after('my_filter_name');
}