我是 Yii2 的新手,他们的 URL 规则有点棘手。我有一个这样SiteController
的动作
public function actionSuccessStories($slug = null)
{
// some codes
}
在我的配置中,我有这个
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'enableStrictParsing' => true,
'rules' => [
// Default routes
'<controller:\w+>/<id:\d+>' => '<controller>/view',
'<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
'<controller:\w+>/<action:\w+>' => '<controller>/<action>',
// page routes
'success-stories/<slug:\w+>' => 'site/success-stories',
// Remove 'site' parameter from URL
'<action:(.*)>' => 'site/<action>',
],
],
在我看来,我有这个来生成我的网址
Url::to(['site/success-stories', 'slug' => 'slug_value'], true);
我的问题是Url::to();
创造success-stories?slug=slug_value
代替
success-stories/slug/slug_value
我这样做对吗?我想要完成的是第二种格式。
我已经阅读了与我的相关的这个问题,但它仅涵盖模块Yii2 url manager don't parse urls with get parameter
将规则更改为:
'rules' => [
// page routes
'success-stories/<slug:\w+>' => 'site/success-stories',
// Default routes
'<controller:\w+>/<id:\d+>' => '<controller>/view',
'<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
'<controller:\w+>/<action:\w+>' => '<controller>/<action>',
// Remove 'site' parameter from URL
'<action:(.*)>' => 'site/<action>',
],
规则的顺序很重要,Yii2 会尝试一一匹配规则,如果合适 - 它会使用它。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句