всем привет
зародилась крамольная мысль: а можно ли сделать так, чтобы не создавать каждый раз экшн под новый раздел сайта?
по идее - каждый раздел сайта это отдельный экшн (или может даже контроллер)
то есть заведение нового раздела подразумевает манипуляции с php-кодом и настройками путей
лень…
может задать все разделы-подразделы-страницы подразделов через GET-параметры?
дабы можно было гибко манипулировать содержимым сайта посредством работы с базой данных
какие меня могут ожидать [color="#FF0000"]подводные камни и сложности[/color]?
в качестве эксперимента, создал один метод =
public function actionHandler($sect='',$subsect='',$page='')
{
if(!empty($sect) and empty($subsect) and empty($page))
{
$this->render('/site/handler/sect');
}
elseif(!empty($sect) and !empty($subsect) and empty($page))
{
$this->render('/site/handler/subsect');
}
elseif(!empty($sect) and !empty($subsect) and !empty($page))
{
$this->render('/site/handler/page');
}
else
{
$this->render('index');
}
}
настроил URLы в конфиге =
'/' => 'site/index',
'/page/<view:\w+>' => 'site/page',
'/<_a:(page|contact|login|logout|captcha|error)>' => 'site/<_a>',
'/<sect:[a-z0-9\_\-]+>/<subsect:[a-z0-9\_\-]+>/<page:[a-z0-9\_\-]+>' => 'site/handler',
'/<sect:[a-z0-9\_\-]+>/<subsect:[a-z0-9\_\-]+>' => 'site/handler',
'/<sect:[a-z0-9\_\-]+>' => 'site/handler',
'/handler' => 'site/handler',
создал пункты в меню =
array('label'=>'раздел', 'url'=>array(
'/site/handler',
'sect'=>'publications')
),
array('label'=>'подраздел', 'url'=>array(
'/site/handler',
'sect'=>'publications',
'subsect'=>'articles')
),
array('label'=>'статья подраздела', 'url'=>array(
'/site/handler',
'sect'=>'publications',
'subsect'=>'articles',
'page'=>'very-long-page-name')
),
вроде бы работает…
что скажете, народ?
p.s. речь идет о фронтенде