将当前路由与laravel中允许的路由数组进行比较

时间:2014-05-04 12:10:51

标签: php laravel-4 compare laravel-routing

我不确定这样做的最好方法,所以将当前数据与数组进行比较就是我目前所处的目标。

我想让一组路由执行过滤器,然后根据路由获得与该过滤器不同的结果。

的内容
if(in_array($currentRoute, $allowedRoutes){
    do action1
}
else{
    do action2
}

就uri而言,我有许多不同的可能性

Route::get('/content','ContentController@index')
Route::post('/dynamic/{dynamic}','DynamicController@store')
Route::delete('dynamic/{dynamic}/content/{content}','ContentController@destroy')

以上所有可能都有查询字符串,并且都有许多HTTP方法。最好的方法是什么?

1 个答案:

答案 0 :(得分:2)

您可以为每个路由分配别名,以便您可以识别当前路径名称,而不管查询字符串。例如:

Route::get('/content', array('uses'=>'ContentController@index', 'as'=>'content'))
Route::post('/dynamic/{dynamic}', array('uses'=>'DynamicController@store', 'as'=>'dynamic.show'))
Route::delete('dynamic/{dynamic}/content/{content}', array('uses'=>'ContentController@destroy', 'as'=>'dynamic.destroy'))

现在在过滤器中,您可以执行以下操作:

$allowedRoutes = array('content');
$currentRoute = Route::currentRouteName();

if (in_array($currentRoute, $allowedRoutes)) {
    // do action1
} else {
    // do action2
}

请注意,此过滤器必须是after过滤器,而不是before过滤器。