GONJY_MONJY
@GONJY_MONJY
Ученик

Как правильно настроить роут в urlManager?

Здравствуйте! У меня на сайте есть модуль, где выводятся список статей отдельным контролером. Сами статьи имеют вот такую ссылку:
static.com/page/article/post.html?slug=test-music-title, где page - модуль, article - контроллер, post - вид, test-music-title - ЧПУ(параметр slug).

Я хочу сократить ссылку до вот такой:
static.com/page/test-music-title.html

Также она должна работать с другими ЧПУ для других статей.

В urlManager я прописывал вот это:
'page/<slug:\w+>.html' => 'page/article/post.html?slug=<slug:\w+>'

И вот это:
'page/<slug:\w+>.html' => 'page/article/post.html?<slug:\w+>'

Менял "w" на другие символы, но не помогло. Читал документацию, но там решения моего вопроса не нашёл.

Прошу объяснить: почему не работает эта строка, и как мне её правильно написать.
  • Вопрос задан
  • 43 просмотра
Решения вопроса 2
cr1gger
@cr1gger
Тупые вопросы порождают тупые ответы (с)
'page/<slug:\w+>.html' => 'page/article/post.html?slug=<slug:\w+>'


Просто разберем, ключ(первый текст) он нужен для того чтобы принять шаблон url там ты пишешь какой урл ты хочешь видеть.
В значении (второй текст) пишешь путь куда этот запрос посылать без регулярок.
Следовательно у тебя должно получится так:

'page/<slug:[\w\-_\d]+>.html' => 'page/article/post'


Я сейчас точно не скажу, но если это модуль там есть свои тонкости, попробуй еще поставить в значении перед page /
так:
'page/<slug:[\w\-_\d]+>.html' => '/page/article/post'


Соответственно в actionPost нужно указать аргументом переменную slug
Ответ написан
Символ '-' не подпадает под маску \w
Попробуй вместо <slug:\w+> написать <slug:[\w\-_]+>
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы