【问题标题】:Laravel Pass Parameter from Route to FilterLaravel 将参数从路由传递到过滤器
【发布时间】:2014-01-14 11:15:10
【问题描述】:

我正在使用 laravel 框架。 如果我有以下路线:

Route::get('/test/{param}', array('before'=>'test_filter', 'SomeController@anyAction'));

还有这个过滤器:

Route::filter('test_filter', function() {
    $param = [Get the parameter from the url];
    return "The value is $param";
});

如何将参数传递给过滤器,以便在访问 /test/foobar 时得到一个页面:“值为 foobar”?

【问题讨论】:

    标签: php routing laravel laravel-4 mamp


    【解决方案1】:

    过滤器可以传递参数,比如路由对象或请求:

    指定过滤器参数

    Route::filter('age', function($route, $request, $value)
    {
        //
    });
    

    以上示例取自文档:http://laravel.com/docs/routing#route-filters

    进入闭包后,您可以从$route 获取参数:

    Route::filter('test_filter', function($route) {
        $param = $route->getParameter('param'); // use the key you defined
        return "The value is $param";
    });
    


    或者,我相信你可以只获取你需要的部分(未经测试但应该可以工作):
    Route::filter('test_filter', function() {
        $param = Request::segment(1);
        return "The value is $param";
    });
    

    【讨论】:

    • 你所说的“在封闭内”是什么意思?
    • 嗯,我不是以英语为母语的人,所以我可能表达得不好......我的意思是,在你作为过滤器的第二个参数传递的函数体中;您已经在做的事情,即不要太在意我的措辞不好:)
    • 感谢您一开始没有得到它
    • 正是我想要的。
    • @DamienPirsy - 你说“// 使用你定义的密钥” - 我必须在哪里定义密钥?我无法获取参数的值
    猜你喜欢
    • 1970-01-01
    • 2021-01-28
    • 2019-07-10
    • 1970-01-01
    • 2019-06-18
    • 2017-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多