2017-08-11 73 views
0

我是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

+1

Youre missing'-' sign,try:''stories-stories/'=>'site/success-stories',' – Yupik

+0

''stories-stories/'=>'site/success-stories'尝试它,但它仍然是相同的,它仍然产生这个'成功故事?slug = slug_value',如果我尝试在我的浏览器中输入像这样的成功故事/ slug/slug_value,我得到一个404错误 – david

+0

你能分享'urlManager'配置? – Yupik

回答

2

更改规则:

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

+0

尝试过,但它仍然是一样的:( – david

+0

''成功故事/ '' - 这个怎么样?也许你的slu contains包含不适当的字符。 – Yupik

+0

好!'成功故事/ '=>'网站/成功故事'的作品,但我的问题是这样的,我的slu value的价值就像'this-value'可能这就是''不是working- – david