Ciao,
Non puoi modificare quel blocco nel layout con i controller , perché il controller lavora prima del layout, quindi devi avere un widget già predisposto per essere dinamico, tipo quello che ho io:
$this->widget('zii.widgets.CMenu',array(
'items'=>Menu::model()->createmenu()
));
Ho infatti un model (che in maniera originale si chiama Menu) che mi crea l’array del menu, per ora in maniera fissa, poi lo farà pescando dal db le voci a seconda dell’utente.
function createMenu() {
//in che modulo sono?
if(Yii::app()->input->get('r'))
{ $req = explode('/', Yii::app()->input->get('r')); $modulobase=$req[0];}
else if(Yii::app()->user->getstate('modulo'))$modulobase= Yii::app()->user->getstate('modulo');
else $modulobase='contabilita';
// $menu=array();
// $array=array();
// $moduli = Yii::app()->db->createCommand()->select('m.*')
// ->from('{{admin_ut2moduli}} u2m')
// ->leftJoin('{{admin_moduli}} m', 'u2m.modulo=m.id')
// ->where( "m.published >= :published",
// array(':published' => 1 )
// )
// ->queryAll();
// var_dump($moduli);
// foreach ($moduli as $modulo) {
// $links= Yii::app()->db->createCommand()->select('m.*')
// ->from('{{admin_ut2menu}} u2m')
// ->leftJoin('{{admin_menu}} m', 'u2m.modulo=m.id')
// ->queryAll();
// if ($links){
// foreach ($links as $link){
//
// }
// //
// if ($modulobase==$modulo['nome']) {
// $array[0]=$littlemenu;
// } else {$array[]=$littlemenu;}
// }
//
// }
$array = array();
$menu['access']=array();
$menu['contabilita']=array('label' => 'Contabilita', 'url' => array('/contabilita/'));
$items['contabilita']=array(
array('label' => 'Piano dei Conti', 'url' => array('/contabilita/conti'))
, array('label' => 'Prima Nota', 'url' => array('/contabilita/primanota'))
, array('label' => 'Causali Contabili', 'url' => array('/contabilita/causalicontabili'))
);
$menu['vendite']=array('label' => 'Vendite', 'url' => array('/vendite/'));
$items['vendite']=array(
array('label' => 'Fatture', 'url' => array('/vendite/fatture'))
,array('label' => 'Clienti', 'url' => array('/vendite/clienti'))
,array('label' => 'Corrispettivi', 'url' => array('/vendite/corrispettivi'))
,array('label' => 'Effetti', 'url' => array('/vendite/effetti'))
,array('label' => 'Preventivi', 'url' => array('/vendite/preventivi'))
,array('label' => 'Ordini', 'url' => array('/vendite/ordini'))
,array('label' => 'DDT', 'url' => array('/vendite/ddt'))
,array('label' => 'Contratti', 'url' => array('/vendite/contratti'))
,array('label' => 'Agenti', 'url' => array('/vendite/agenti'))
);
$menu['anagrafica']= array('label' => 'anagrafica', 'url' => array('/anagrafica'));
$items['administration']=array(
array('label' => 'Utenti', 'url' => array('/administration/utenti'))
,array('label' => 'Moduli', 'url' => array('/administration/moduli'))
);
);
$menu['administration']=array('label' => 'Amministrazione', 'url' => array('/administration/'));
$menu['aziende']=array('label' => 'Aziende', 'url' => array('/aziende/'));
$items['aziende']=array(
array('label' => 'Amministrazione', 'url' => array('/administration/'))
);
$array[0]=$menu[$modulobase];
if (isset($items[$modulobase])){
foreach ($items[$modulobase] as $value) {
$array[]=$value;
}
}
$i=0;
unset($menu[$modulobase]);
foreach ($menu as $name => $vocimenu) {
$array[0]['items'][$i]=$vocimenu;
if (isset($items[$name])){
foreach ($items[$name] as $voce){ $array[0]['items'][$i]['items'][]=$voce;}
}
$i++;
}
$array[] = array('label' => 'Login', 'url' => array('/access/login'), 'visible' => Yii::app()->user->isGuest);
$array[] = array('label' => 'Logout (' . Yii::app()->user->name . ')', 'url' => array('/site/logout'), 'visible' => !Yii::app()->user->isGuest);
return $array;
}
Immagino tu possa fare una cosa simile,
magari aggiungendo una funzione Aggiungi_voce() che puoi richiamare dai vari controller, modificando un array del model.
poi con la funzione createmenu() usi questo array, magari aggiungendo i controlli di login e logout e dovresti essere a posto.