[英]Get matched route before execution in Laravel 4
我需要拦截一个路由,以便我可以获取其中一个参数,并使用该参数在页面请求开始时查询缓存。 我有两个问题:
exists/isset
,或者只是从路径获取所有参数? 编辑:请注意, Route::matched()
或Event::listen('router.matched')
功能需要4.1.19或更高版本,早期版本不包含这些功能。
是的,你可以使用这样的东西:
Event::listen('router.matched', function($route) {
$username = $route->getParameter('username');
if($username && $username == 'heera') {
// do something
}
});
例如,我有一条路线,比如Route::get('/user/{username}', 'UserController@show')
,这条路线的url
就像http://blog.dev/user/heera
所以,在matched
事件监听器中,我将使用$route->getParameter('username')
获取username
参数,如果是heera
则执行某些操作,否则不执行任何操作。 $route
变量是Illuminate\\Routing\\Route
一个实例,您可以使用此对象的所有公共方法。
顺便说一句,您可以将它放在您的filters.php
文件中。
更新:还可以使用以下命令为router.matched
事件注册事件:
Route::matched(function($route) {
// Do something
});
或这个:
$app['router']->matched(function($route) {
// do something
});
Laravel Framework version 4.1.19
上测试过。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.