2014-03-12 3 views
0

Я реализовал проект в Yii. У меня проблема с конфигурацией менеджера URL. Я успешно выполнял управление URL-адресами, но когда я показываю тот, который должен быть только для отображения, то естьURL-менеджер в потоке Yii

'urlManager'=>array(
     'urlFormat'=>'path', 
     'rules'=>array(
          'Home'=>'site/index', 
      //'cuisine'=>'recipe/index3', 

      'cuisine/<:\w+>/<id:\d+>/' => 'recipe/index3', 
          //'<id:\w+>/'=>'recipe/index3', 
          '<title:.*?>/p/<id:\d+>'=>'product/view', 
      'holidays/<name:\w+>/<id:\d+>/'=>'recipe/index1', 
      'calories/<name:\w+>/<id:\d+>/'=>'recipe/index2', 

код выше работает нормально. но рецепт/index3 вместо кухни. Я хочу быть шоу. i, приведенный выше, тогда я прокомментировал, потому что он не работает так. следующее заявление работает нормально. но при визуализации страницы, например мудрый показывать

http://kitchenking.ebhasin.com/recipe/index3/name/German 

в вышеуказанной ссылке. хочет быть таким.

http://kitchenking.ebhasin.com/cuisine/German 

ответ

1

Вы пробовали это:

'cuisine/<name:\w+>/<id:\d+>/' => 'recipe/index3', 
+0

, что только я с помощью но. его полное отображение –

+0

Я имею в виду, что вы использовали «имя» перед двоеточием, как я упомянул в своем ответе. –

+0

извините ссылки, такие как http://kitchenking.ebhasin.com/recipe/index3/name/American. то же самое только показано –

1

Удалить идентификатор из данного правила:

'cuisine/<name:\w+>' => 'recipe/index3', 

правильный способ разрешить названия с несколькими пробелами, это еще одно поле под названием " slug ", где вы копируете заголовок и конвертируете все пробелы в тире перед сохранением. Используйте slug для URL-адресов вместо заголовка. Для этого нет более простого решения.

Put это в модели:

protected function beforeSave() { 
    $this->slug = preg_replace('/[^a-z A-Z]+/', '-', $this->title); 
    return parent::beforeSave(); 
} 

Тогда используйте это для URL-адресов:

<a href="/cuisine/<?= $model->slug ?>"><?= $model->title ?></a> 
+0

этот комментарий работает ранее, но. если в табличных данных два слова, т.е. (праздничные рецепты), если одно слово без пробела, то есть (праздник). над кодом работает. пожалуйста, расскажите, как это сделать. –

+0

Правильный способ решить это - иметь другое поле под названием «slug», где вы копируете заголовок и конвертируете все пробелы в тире перед сохранением. Используйте slug для URL-адресов вместо заголовка. Для этого нет более простого решения. –

+0

pl предложите мне один пример кодирования –

Смежные вопросы