在 Laravel 中:如何根据 URI 将多个过滤器应用于一整套路由?
Posted
技术标签:
【中文标题】在 Laravel 中:如何根据 URI 将多个过滤器应用于一整套路由?【英文标题】:In Laravel: How to apply many filters to an entire set of routes based on their URI? 【发布时间】:2015-07-30 02:47:47 【问题描述】:在 Laravel 框架中:文档 (route filter section) 说:
您还可以指定一个过滤器根据其 URI 应用于整个路由集。
Route::filter('admin', function() // ); Route::when('admin/*', 'admin');
如果我有多个过滤器并且想根据它们的 URI 将它们全部应用到一整套路由上怎么办?我应该这样应用它们:
Route::when('admin/*', 'filter_1');
Route::when('admin/*', 'filter_2');
Route::when('admin/*', 'filter_3');
或者我可以将它们全部放在一个数组中并像这样应用它们:
Route::when('admin/*', array('filter_1', 'filter_2', 'filter_3'));
【问题讨论】:
您的问题可以使用一些问号。 你不能在你的情况下使用Route::group
吗?然后使用教皇将过滤器应用于该集合?
两种方案都试一下,你自己回答。我很确定第一个会起作用。
@Mr.Blackus 第一个解决方案效果很好(来自文档),我的问题是:第二个解决方案是否与第一个解决方案完全一样?
看看github.com/Zizaco/entrust
【参考方案1】:
尝试后发现使用
Route::when('admin/*', array('filter_1', 'filter_2', 'filter_3'));
将执行相同的结果,所以是的,我可以使用上面的行而不是接下来的 3 行
Route::when('admin/*', 'filter_1');
Route::when('admin/*', 'filter_2');
Route::when('admin/*', 'filter_3');
并注意过滤器将分别应用,这意味着将首先应用filter_1
,如果一切正常,将应用filter_2
,依此类推。
【讨论】:
以上是关于在 Laravel 中:如何根据 URI 将多个过滤器应用于一整套路由?的主要内容,如果未能解决你的问题,请参考以下文章
我可以在刀片模板 laravel 5 中使用请求路径 URI 吗?
如何在 switch 语句中使用 laravel 模型运行多个 Where 子句
如何在 laravel 中使用查询生成器根据 id 从多个表中获取数据