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

sun*_*eth 10 url-routing yii2

当用户访问时domain/page,我需要将它们路由到controller/action/100.我不想通过URL传递任何参数,但想在url规则中添加它.

我将下面的代码添加到我的配置文件中.

'urlManager' => [
    'rules' => [
        'login' => 'site/login',  // working
        'about' => 'cms/page/10'  // Not Working
        'about' => 'cms/page?id=10'  // Not Working
    ],
],
Run Code Online (Sandbox Code Playgroud)

第一条规则工作正常.

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

rob*_*sch 8

您需要使用默认值并明确声明规则:

'urlManager' => [            
    'rules' => [
        'login' => 'site/login',
        [
            'pattern'  => 'about', 
            'route'    => 'cms/page',
            'defaults' => ['id' => 10],
        ]  
    ],
],
Run Code Online (Sandbox Code Playgroud)

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

另请考虑在Web服务器上配置重定向.