PHP - menu dinamico en cakephp

   
Vista:

menu dinamico en cakephp

Publicado por Francisca (2 intervenciones) el 04/05/2009 23:55:52
Hola, hace poco que empece a desarrollar aplicaciones web utilizando cakephp como framework y me gustaria saber como se puede hacer un menu cuyas categorias estan en una base de datos y que sea visible en todas las paginas. Se que tengo que definir un "element" en las vistas, pero no se como hacer que los datos esten disponibles desde cualquier controlador.

Busque por internet y habia un tutorial pero el link estaba roto: http://wiki.cakephp.org/tutorials:dynamic-menu

Tambien encontre en el grupo de cakephp de google una buena sugerencia:
"La forma mas simple que se me ocurre, si es totalmente global:
en el app_controller, en before_filter hacer un $this->set('categories',
$this->Categories->find("all")); (asegurate de que pusiste un $uses =
'Category' (creo que esa es la sintaxis, tambien creo que hay una mejor manera de hacer esto, pero no recuerdo cual)).
Luego, usas $categories donde quieras. "

¿Existe una mejor manera para hacerlo que la q se describe en ese fragmento de post?

Muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:menu dinamico en cakephp

Publicado por Juan (1 intervención) el 05/05/2009 21:05:21
Yo no conozco ninguna, como sugerencia te sugiero echar un vistazo a algunos módulos de menús dinámicos ya echos en la propia página de cakephp
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:menu dinamico en cakephp

Publicado por Feli (1 intervención) el 30/06/2009 09:17:36
Defines un element (dentro de la carpeta app/views/elements, por ej. menus.ctp)
Ese fichero debe contener algo parecido a ésto:

<?php
$menus=$this->requestAction('menus/activos');
if (!empty($menus)) {
echo "<ul>";
foreach ($menus as $menuitem):
echo "<li>".$html->link($menuitem['modelo']['nombre'],'pagina_destino_menu',null,null,false)."</li>";
endforeach;
echo "</ul>";
}
?>

¿Qué hace eso exactamente?

Pues primero recoge los menus en la variable $menus lanzando un método, que debes definir en tu controlador (yo hago referencia a 'menus/activos') porque tengo un método que sólo extrae los menus con un campo men_act=1.

Luego comprueba que haya elementos, y si hay los recorre y los muestra con un html->link.

Tú puedes hacer un echo $this->renderElement('menus'); desde cualquier vista, y en tu caso, desde cualquier layout, y mostrará siempre los menus activos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:menu dinamico en cakephp

Publicado por Francisca (2 intervenciones) el 30/06/2009 18:44:43
muchas gracias :)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar