2013-04-24 37 views
4

In YII 如果標題中有空格用於url,則默認情況下空格被替換爲「+」號。事情是這樣的:如何用「 - 」或「_」替換URL「」?

www.domain.com/event/view/id/ 了Dj + Robag + Ruhme

我想要做的是,我要替換 「+」 號用「 - 」(破折號)或用「_」(下劃線)表示。事情是這樣的:

www.domain.com/event/view/id/ DJ-Robag-Ruhme

www.domain.com/event/查看/ ID/Dj_Robag_Ruhme

現在我urlManager是:

'urlManager'=>array(
    'urlFormat'=>'path', 
    'showScriptName'=>false, 
    'caseSensitive'=>false, 
    'rules'=>array(
     //'<controller:\w+>/<id:\d+>'=>'<controller>/view', 
     //'<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>', 
     //'<controller:\w+>/<action:\w+>'=>'<controller>/<action>', 
     ), 
), 

回答

7

好吧,沒什麼奇怪的,因爲Yii使用urlencode來編碼url參數。

第一種方法

你可以在你的模型處理這個問題,例如:

public function getUrl() 
{ 
    return Yii::app()->createUrl('/model/view', array(
    'id'=>str_replace(' ', '-', $this->id), 
)); 
} 

不要忘記:

  • 與模型的名稱替換model
  • 使用這種方法來獲得你的模型的網址,
  • 修改您的觀點行動您的控制器:

    public actionView($id) 
    { 
        $id = str_replace('-', ' ', $id); 
        // ..... 
    } 
    

第二條本辦法

你可以使用自己的CUrlRule類:

http://www.yiiframework.com/doc/guide/1.1/en/topics.url#using-custom-url-rule-classes

+0

我是新來YII。我應該在哪裏放這個方法,我在我的Event模型中嘗試過,但它沒有改變任何東西? – 2013-04-24 17:58:16

+0

仔細閱讀我的回答,你必須使用'getUrl'來建立你的事件鏈接 – soju 2013-04-25 06:38:17

+0

它不工作。我在事件模型中使用了getUrl方法,但仍然獲得「+」。 – 2013-04-27 14:54:07