根据我的理解,我们可以通过以下方式传递参数:
Route::filter('age', function($route, $request, $value)
{
//
});
Route::get('user', array('before' => 'owner|age:200', function()
{
return 'Hello World';
}));
但是,如何将数组传递给过滤器?例如,我想将“汽车,快艇,共管公寓”传递给业主过滤器。数组中的项目数是动态的,具体取决于路由。怎么可能这样做?
谢谢。
答案 0 :(得分: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 :(得分: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';
}));
答案 2 :(得分: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
}
});