YII 2 网址路由无法使用 $_GET 参数

  • 本文关键字:GET 参数 路由 YII php yii2
  • 更新时间 :
  • 英文 :


我是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 管理器不使用 get 参数解析 url

将规则更改为:

'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 会尝试逐个匹配规则,如果合适 - 它会使用它。

最新更新