Сейчас на сайте путь к категориям выглядит так http://site.ru/cat22/0
Задача привести ссылки на категории в виду
http://site.ru/avtokresla/0
http://site.ru/kolyaski
avtokresla,kolyaski - это названия категорий транслитом, которые в базе имеют свои ID
Более того категория avtokresla это контроллер avtokresla
а kolyaski это контроллер kolyaski
появляется задача выбора контроллера.
Мое решение
на событие ‘onBeginRequest’ назначена ‘onBegin_function’
в которой
function onBegin_function( $event ){
$RequestUri = Yii::app()->getRequest()->getRequestUri(); // получаем URI
preg_match('/([\w]+)\//i',$RequestUri, $m );
$command = Yii::app()->db->createCommand("SELECT .... c_uri_title = '$m[1]'");
$res = $command->query();
if ( $cat_type > 0 ){
Yii::app()->runController( 'kolyaski' );
}else{
Yii::app()->runController( 'avtokresla' );
}
}
Проблема - вместе с Yii::app()->runController( ‘avtokresla’ ); выполняется контроллер по умолчанию
Yii::createWebApplication($config)->run();
Как мне отключать запуск этого контроллера в функции onBegin_function?
Кто-то скажет что можно сделать намного проще через urlManager, но есть специфика. У сайта меняется движок и структура, для SEO необходимо сохранить старые ссылки.
Поэтому нужно делать запрос в БД чтобы понять какой контроллер запускать.