Так красиво, удобно да и думаю правильно. Закинули класс в компоненты да и все.
Например также я работаю с константами, есть класс Globals, и в нем константы для приложения.
require($_SERVER['DOCUMENT_ROOT'].'/protected/__include/menu.php') // не совсем красиво
require(Yii::app()->basePath.DIRECTORY_SEPARATOR.'__include'.DIRECTORY_SEPARATOR.'menu.php')//превращается в такое если написать правильно, и это еще некрасивее
Ну и я бы так не писал
Портлет нужен для того чтобы не заморачиваясь сделать сквозной виджет по сайту(ну это я так себе представляю, например вывести данные профиля пользователя, или логин форму сбоку).
Если честно никогда не пользовался им, обычно делаю свои виджеты.
вобщем решил использовать портлет: его проще вставлять куда нужно, а пункты меню мне удобнее формировать в zii.widgets.CMenu
саммари такой =
создал класс и чутка прооверрайдил =
Yii::import('zii.widgets.CPortlet');
class DepatmentMenu extends CPortlet
{
public function init()
{
parent::init();
}
public $decorationCssClass = false;
public $contentCssClass = false;
public $titleCssClass = false;
public $htmlOptions = false;
public function run()
{
$this->renderContent();
$content=ob_get_clean();
if($this->hideOnEmpty && trim($content)==='')
return;
echo "\n".$content;
}
protected function renderContent()
{
$this->render('depatmentMenu');
}
}
создал пункты меню в представлении depatmentMenu =