【问题标题】:How to replace URL " " by "-" or "_"?如何用“-”或“_”替换URL“”?
【发布时间】:2013-04-17 16:29:30
【问题描述】:

在 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>',
        ),
),

【问题讨论】:

    标签: url url-rewriting yii


    【解决方案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

    【讨论】:

    • 我是 YII 的新手。我应该把这个方法放在哪里,我在我的事件模型中尝试过,但它没有改变任何东西?
    • 仔细阅读我的回答,您必须使用getUrl 来建立您的活动链接
    • 它不工作。我在我的事件模型中使用了 getUrl 方法,但我仍然得到“+”。
    • 您是否修改了视图以使用getUrl 而不是默认网址?如果你不想修改你的观点,你应该考虑使用我的第二种方法。
    • 当我使用这个功能时,它成功地改变了 url 但我得到了一个Error 404 The requested page does not exist.
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-07
    • 2021-08-08
    • 1970-01-01
    相关资源
    最近更新 更多