如何更换URL“”用“ - ”或“_”?(How to replace URL “ ” by “-”

2019-09-01 00:54发布

在YII如果在标题空白正在被用于URL,则默认情况下空格由“+”号代替。 事情是这样的:

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

我想要做的是,我要替换的“+”符号“ - ”(破折号号)或“_”(下划线)。 事情是这样的:

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

要么

www.domain.com/event/view/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>',
        ),
),

Answer 1:

好了,没什么好奇怪的,因为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



文章来源: How to replace URL “ ” by “-” or “_”?