Вы также можете сделать это с помощью правил перезаписи.Подобное правило в вашем конфигурационном файле:
'controller/<slug:[\w\-]+>'=>'controller/view',
примет URL-адрес, подобный следующему:
controller/my-slug
, и перенаправит на actionView () в вашем контроллере и передастslug ("my-slug") в качестве переменной $ _GET.С этим правилом перезаписи вы теперь вызываете $ _GET ['slug'], и он возвращает "my-slug" из URL.
У меня есть строка "slug" в качестве первичного ключа, поэтому я просто запрашиваюDB для $ _GET ['slug'] в моем actionView (), и я получаю правильную запись на основе URL.Работает как шарм.Удачи!
ОБНОВЛЕНИЕ Чтобы избавиться от префикса контроллера в дополнение к использованию слагов, вам, вероятно, понадобится одна большая таблица для отслеживания всех слагов URL (для предотвращения дублирования).Если у вас это есть, то вы можете сделать несколько разных вещей:
1 Переопределить onBeginRequest , чтобы выполнить поиск в главной таблице слагов, чтобы выяснить, какой контроллер вызывать.2. Используйте мастер-перезапись для единственного ActionIndex в SiteController, и в этом действии найдите слаг в главной таблице, чтобы выяснить, в какой контроллер / действие отправить пользователя.Правило переписывания будет выглядеть примерно так:
'<slug:[\w\-]+>'=>'site/index',