【问题标题】:Laravel: pass route parameter to filter parameterLaravel:将路由参数传递给过滤参数
【发布时间】:2014-08-08 21:40:40
【问题描述】:

我有这条路线(注意使用可选参数应用的过滤器):

Route::get('/greet/{name?}', array(
    'before'    => 'summergreet:optionalNameToCapture',
    function ($name = 'friend') {
        return View::make('greetview', array('name' => $name));
    }
));

以及分配的过滤器:

Route::filter('summergreet', function($route, $request, $name = 'amigo')
{
    if (date('m') >= 7 && date('m') <= 9) {
        return View::make('summergreetview', array('name' => $name));
    }
});

如何捕获路由的可选参数并将其传递给过滤器?

【问题讨论】:

    标签: php laravel laravel-4


    【解决方案1】:

    你可以的

    Route::filter('summergreet', function($route, $request, $name = 'amigo')
    {
        $name = $route->parameter('name');
        if (date('m') >= 7 && date('m') <= 9) {
            return View::make('summergreetview', array('name' => $name));
        }
    });
    

    我不确定“可选”参数是如何工作的。您可能需要先检查变量上的isset()is_null....

    【讨论】:

    • 成功了!谢谢!但后来我必须去掉附加到过滤器别名的参数子字符串:“:optionalNameToCapture”。好像对可选参数没用。
    • 我这样做是为了检查参数是否为空: $nameFromRoute = $route->parameter('name'); $name = isset($nameFromRoute) ? $nameFromRoute : $name;
    • 与其像我说的那样无用,我仍然可以使用带有默认值“amigo”的可选过滤器参数,例如:'before' => 'summergreet:amigo',我不会强制为过滤器闭包中的参数提供默认值。不太确定是否使用一种选择。
    猜你喜欢
    • 2019-03-03
    • 2018-08-14
    • 2014-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-17
    • 2018-06-20
    • 1970-01-01
    相关资源
    最近更新 更多