2014-01-09 59 views
2

從我的理解,我們可以通過參數通過這個過濾:Laravel 4:傳遞數組來過濾

Route::filter('age', function($route, $request, $value) 
{ 
    // 
}); 

Route::get('user', array('before' => 'owner|age:200', function() 
{ 
    return 'Hello World'; 
})); 

但是,我怎麼能傳遞數組到過濾器?例如,我想通過「汽車,快艇,公寓」給車主過濾器。根據路線,陣列中的項目數量是動態的。這怎麼可能呢?

謝謝。

回答

2

你不能在Laravel 4.0中傳遞數組(可能在Laravel 4.1中)。但是,您可以在過濾器中傳遞多個參數,並確保它們之間用逗號分隔(,)

例如:

Route::filter('age', function($route, $request, $age, $gender, $name) 
{ 
    if ($age < 200 && $gender == 'male' && $name = 'anam') { 
     return "Welcome to Laravel. Enjoy the awesome!"; 
    } 
}); 

Route::get('user', array('before' => 'owner|age:200,male,anam', function() 
{ 
    return 'Hello World'; 
})); 
4

我做這個招數:

Route::filter('filtername', function($route, $request, $value) 
{ 
    $array = explode('-',$value); // use - for delimiter 
    // do whatever here 
}); 

而且對路線,這樣使用

Route::get('user', array('before' => 'filtername:item1-item2-item3', function() 
{ 
    return 'Hello World'; 
})); 

希望這有助於。

1

就像Anam說的那樣,你可以給多個參數用逗號分隔。 您可以給出多個參數並使用func_get_args()將它們變回到一個數組中。

array_except是一個laravel函數,用於從數組中刪除某些鍵。

Route::filter('age', function($route, $request, $value) 
{ 
    $params = array_except(func_get_args(), array(0, 1)); 
    if(count($params) > 3) { 
     // do something 
    } 
});