yii2 路由 - 将参数传递给规则中的路由
yii2 routing - pass parameter to route in rules
当用户访问 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
],
],
第一条规则运行良好。
我可以在 url 规则中传递路由参数吗?
您需要使用 defaults 并显式声明规则:
'urlManager' => [
'rules' => [
'login' => 'site/login',
[
'pattern' => 'about',
'route' => 'cms/page',
'defaults' => ['id' => 10],
]
],
],
如果您想在使用 UrlManager 创建 URL 时阻止转换,请将 'mode' => \yii\web\UrlRule::PARSING_ONLY
添加到此规则(例如 Url::to()
使用 UrlManager 及其规则并在相反方向,即Url::to(['cms/page', 'id' => 10])
会生成一个linkabout
)
另请考虑在您的网络服务器上配置重定向。
当用户访问 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
],
],
第一条规则运行良好。
我可以在 url 规则中传递路由参数吗?
您需要使用 defaults 并显式声明规则:
'urlManager' => [
'rules' => [
'login' => 'site/login',
[
'pattern' => 'about',
'route' => 'cms/page',
'defaults' => ['id' => 10],
]
],
],
如果您想在使用 UrlManager 创建 URL 时阻止转换,请将 'mode' => \yii\web\UrlRule::PARSING_ONLY
添加到此规则(例如 Url::to()
使用 UrlManager 及其规则并在相反方向,即Url::to(['cms/page', 'id' => 10])
会生成一个linkabout
)
另请考虑在您的网络服务器上配置重定向。