繁体   English   中英

在Laravel 4执行之前获得匹配的路线

[英]Get matched route before execution in Laravel 4

我需要拦截一个路由,以便我可以获取其中一个参数,并使用该参数在页面请求开始时查询缓存。 我有两个问题:

  1. 我可以听一个“匹配”的活动吗?
  2. 在Laravel中是否有办法检查路由参数键是否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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM