当用户访问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
],
],
第一条规则正常。
我可以在网址规则中传递路由的参数吗?
答案 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
)
另请考虑在您的网络服务器上配置重定向。