Como Agregar Botones Dinámicos Al Menu De Yii

Hola a todos, necesito saber como es posible agregar botones dinámicos al menú de Yii.Por ejemplo necesito hacer una aplicacion en la que el webmaster pueda mediante un formulario agregar un botón en la barra de de menu de yii.Gracias de antemano.

Buenas!

Basicamente el menú de YII (zii.widgets.CMenu) se alimenta de un array de elementos: https://github.com/yiisoft/yii/blob/master/demos/blog/protected/views/layouts/main.php#L29

Tendrías que hacer un modelo que represente un elemento en el menú, podría tener como propiedades: label, url, orden y las que necesites.

Después hacer el ABM (con GII por ejemplo).

Una vez que tenés datos cargados, simplemente recorrerlos y crear un array con los datos que necesita el componente del menú.

Acá se listan todas las opciones que acepta cada ítem del array en cuestión: http://www.yiiframework.com/doc/api/1.1/CMenu#items-detail

¿Vos necesitás algún ejemplo de código?

Saludos!

Muchas gracias por la información,la he estado estudiando,pero si pudieras escribirme un ejemplo básico de com o hacerlo para aterrizar todo lo que he leido ahí.Saludos.

Hola dj_lethal,

Se me ocurre algo así.

En el controlador de la vista tendrías:





$arrMenu = array();

//Dentro de este array metes los elementos de menu que quieras, con el formato adecuado

//Hay muchas formas de hacerlo, te pongo la más sencilla y directa, asigno cada elemento directamente


$arrMenu[]="array('label'=>'Home', 'url'=>array('usuario/pcontrol')),";

$arrMenu[]="array('label'=>'About', 'url'=>array('/site/page', 'view'=>'about')),";


//Pasas el array a la vista que tiene la variable $arrMenu para recoger este array 


$this->render('view', array('arrMenu'=>$arrMenu));



y en la vista:





 $this->widget('zii.widgets.CMenu',array(

    'items'=>array($arrMenu))); 



El array que creas en el controlador lo puedes rellenar de mil maneras dinámicamente, por ejemplo recogiendo datos de usuario, o como dices, que lo añada alguien. Por ejemplo, si programas un botón para añadir otro elemento al menú, debes de hacer que en el evento click (por ejemplo) envíe un nuevo elemento al arras $arrMenu (debe de llamar al método del controlador apropiadamente).

Espero explicarme. Sino, pregunta más concretamente lo que sea.

Saludos.

Muchas gracias Geoide,voy a probar con esto que me dices.