Как изменить change / to - в yii2 url для конкретного действия

Я переписываю WordPress сайт на yii2. и я должен сохранить предыдущие посты URL по некоторым причинам! Это нечто подобное

https://example.com/blog-thenameofpost

Итак, я создал контроллер блога, и у меня есть эта ссылка таким образом

https://example.com/blog/view?id=thenameofpost

Я не знаю, как я могу написать правило urlManager для этого. Я просто добавляю эти правила

    '<controller:\w+>/<id:\d+>' => '<controller>/view',
    '<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
    '<controller:\w+>/<action:\w+>' => '<controller>/<action>',

а теперь эта ссылка https://example.com/blog/view?id=thenameofpost открывается с чем-то вроде этого:
https://example.com/blog/thenameofpost

Есть ли правила, чтобы открыть ссылку с чем-то вроде этого https://example.com/blog/thenameofpost?

1 ответ

Если вы хотите создать правило для https://example.com/blog-thenameofpost Вы можете добавить следующее правило.

'blog-<id>' => 'blog/view',

Левая часть - это то, что вы на самом деле увидите в адресной строке. Ты можешь использовать < > указать параметр. Так что это правило будет соответствовать всему, что начинается с blog- а затем рассмотреть часть после этого как id пары. Правая часть - то, куда этот запрос должен быть направлен. Таким образом, этот запрос будет в конечном итоге в BlogController и позвонить actionView($id), где $id будет установлен на <id> часть; thenameofpost в случае примера URL.

Правило для https://example.com/blog/thenameofpost было бы

'blog/<id>' => 'blog/view'

Дополнительная информация: В части параметров (слева) вы можете добавить дополнительную информацию для соответствия параметру. Так <id:\d+> будет соответствовать только цифры, из-за де \d+ часть. Для получения дополнительной информации прочитайте документы: http://www.yiiframework.com/doc-2.0/yii-web-urlmanager.html$rules-detail

Другие вопросы по тегам