Можно ли расширить URL-адреса и правила Yii через контроллер?

Можно ли расширять маршруты и правила URL Yii через контроллер на лету или путем расширения самого класса CController?

Я действительно застрял с этим, ничего не пробовал.

Как это сделать в / с Yii?

1 ответ

Решение

Сначала вы должны знать, для каких правил URL используются:

  1. Парсинг входящего URL. urlManager Компонент разрешает URL-адрес маршрута, чтобы Yii мог вызвать правильное действие в конкретном контроллере и модуле.
  2. Создание URL из звонков на createUrl() в вашем коде.

Учитывая (1) выше, очевидно, что вы не можете добавлять правила URL в свой контроллер, если хотите использовать эти URL в своем приложении. Слишком поздно, так как Yii уже прошел процесс разрешения запроса к маршруту. Даже если вы хотите создать URL-адреса, это не имеет особого смысла, так как ваше приложение никогда их не поймет.

Правильный способ повысить динамику разбора / создания URL-адреса - использовать собственный класс правил URL-адреса. Там вы можете написать любой код, который хотите создать, и анализировать даже самые сложные URL-адреса. Тема описана в руководстве.

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