YII 2 Url Route不使用$ _GET参数

时间:2017-08-11 05:47:57

标签: php yii2

我是Yii2的新手,他们的网址裁定有点棘手。我有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

而不是

myFunction.bind(this)我这样做对吗?我想要完成的是第二种格式。

我已经阅读了与我相关的这个问题,但它仅涵盖模块 Yii2 url manager don't parse urls with get parameter

1 个答案:

答案 0 :(得分:3)

将规则更改为:

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