Filter Laravel,将通配符路由到过滤器,然后路由到控制器

Filter Laravel,将通配符路由到过滤器,然后路由到控制器,filter,controller,wildcard,laravel,routes,Filter,Controller,Wildcard,Laravel,Routes,我试图从URL中捕获一个通配符,然后首先将其传递给过滤器,然后路由到控制器。我不知道如何准确地策划这个问题,但这里是我迄今为止尝试过的 Route::get('test/(:any?)', array('as' => 'testroute', 'uses' => 'test@result', 'before' => "test_filter:$1")); Route::filter('test_filter', function($id = NULL) { if($i

我试图从URL中捕获一个通配符,然后首先将其传递给过滤器,然后路由到控制器。我不知道如何准确地策划这个问题,但这里是我迄今为止尝试过的

Route::get('test/(:any?)', array('as' => 'testroute', 'uses' => 'test@result', 'before' => "test_filter:$1"));

Route::filter('test_filter', function($id = NULL)
{
    if($id)
    echo "This id is " . $id;    // Prints "This id is $1"
});

基本上,我想检查URL是否附加了一个id,如果有,则设置一个cookie。但不管这种情况如何,我希望这个路由由控制器处理,不管是否附加了任何id

我必须对这么多的路线做同样的事情,所以我更喜欢过滤器之类的东西,而不是修改控制器的代码

我知道我可以直接将通配符元素传递给闭包,或者我可以将其作为参数提供给任何控制器,但在这种情况下,我必须修改控制器代码,目前无法修改


我可以通过过滤器吗?或者我不必修改控制器代码的任何其他方式?

尝试在前面的命令之后传递匿名消息

Route::get('test/(:any?)',
    array(
       'as' => 'testroute',
       'uses' => 'test@result',
       'before' => "test_filter",
       function($my_cookie_value)
       {
          // Set cookie here
       }
    )
 );
摘自

我将使用中间件(或过滤较旧的Laravel版本),并将路由添加到一个组中,该组包含中间件,如您在此处所见


中间件将在路由代码之前执行,您可以在其中添加一个逻辑来管理cookie。

不,匿名函数不起任何作用。它只需应用过滤器,然后将路由转发给控制器。此外,我还需要获取筛选器或匿名闭包中通配符的值。@Gufran再次更新了代码,将匹配项传递给anon函数,看看是否有效。不,它什么都不做。看起来匿名函数只是被忽略了。顺便说一句,我已经阅读了所有关于Laravel文档的文档,显然这是不可能的。谢谢。非常感谢,但这个问题已经问了2.5年了。它通常会在问题下方显示发布日期,所以下次尝试检查日期。
Route::get('test/(:any?)',
    array(
       'as' => 'testroute',
       'uses' => 'test@result',
       'before' => "test_filter",
       function($my_cookie_value)
       {
          // Set cookie here
       }
    )
 );