yii2 routing - 将参数传递给规则中的路由

时间:2016-04-27 09:31:58

标签: yii2 url-routing

当用户访问domain/page时,我需要将其路由到controller/action/100。 我不想通过URL传递任何参数,但希望将其添加到网址规则中。

我将以下代码添加到配置文件中。

'urlManager' => [
    'rules' => [
        'login' => 'site/login',  // working
        'about' => 'cms/page/10'  // Not Working
        'about' => 'cms/page?id=10'  // Not Working
    ],
],

第一条规则正常。

我可以在网址规则中传递路由的参数吗?

1 个答案:

答案 0 :(得分:7)

您需要使用defaults并明确声明规则:

'urlManager' => [            
    'rules' => [
        'login' => 'site/login',
        [
            'pattern'  => 'about', 
            'route'    => 'cms/page',
            'defaults' => ['id' => 10],
        ]  
    ],
],

如果您想在使用UrlManager创建网址时阻止转换,请'mode' => \yii\web\UrlRule::PARSING_ONLY添加Url::to()(例如Url::to(['cms/page', 'id' => 10])使用UrlManager及其规则并以相反的方向工作,即{ {1}}将生成链接about

另请考虑在您的网络服务器上配置重定向。