Вопрос: Как заменить URL "" на "-" или "_"?


В ИИИ Если в заголовке есть пустое пространство, которое используется для 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>',
        ),
),

4


источник


Ответы:


Ну, ничего странного, поскольку Yii urlencode для кодирования параметров URL.

Первый подход

Вы можете справиться с этим в своей модели, например. :

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

Не забудьте:

  • замещать model с названием вашей модели,
  • используйте этот метод, чтобы получить свой URL-адрес модели,
  • измените действие своего вида в своем контроллере:

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

Второй подход

Вы можете использовать свои собственные CUrlRule класс :

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


7