Menu desde DB con Doctrine

8 views
Skip to first unread message

Erick Hernandez

unread,
Jul 29, 2015, 2:33:21 PM7/29/15
to Symfony Madrid
Buenas, tengo un dilema y espero puedan ayudarme.
Soy bastante nuevo con symfony2 (menos de un mes) y necesito hace un menu que proviene de la base de datos con doctrine.

Tengo los elementos del menu guardados en la base de datos y quiero que se muestren en una barra lateral que esta disponible en cualquier parte del sistema, ¿como hago para cargar ese menu y que este disponible en todo momento sin tener que llamarlo en cada controlador?.
Uso roles para cada modulo/controlador del sistema por lo que si no tiene permisos para ese modulo no le muestro el elemento en el menu.

De hecho esto es un sistema que ya tenia hecho con codigo propio y que estoy migrando a symphony por cuestiones de seguridad de codigo y asi es como funcionaba el anterior y me gustaria que no se note la diferencia en cuanto a funcionalidad y modelo de negocios.

daniel....@freelancemadrid.es

unread,
Jul 30, 2015, 3:04:53 AM7/30/15
to symfony...@googlegroups.com
2015-07-29 20:33 GMT+02:00 Erick Hernandez <takashi...@gmail.com>:
Tengo los elementos del menu guardados en la base de datos y quiero que se muestren en una barra lateral que esta disponible en cualquier parte del sistema, ¿como hago para cargar ese menu y que este disponible en todo momento sin tener que llamarlo en cada controlador?.

Tendrás que implementar algún tipo de cache.

Yo implementé esta librería[1] por si quieres tener un ejemplo.
class MenuService
{

public function getMenu()
{
if ($menu = $this->getMenuFromCache()) {
return $menu;
}

$menu = $this->getMenuFromDatabase();
$this->saveMenuToCache($menu);

return $menu;
}
}
Uso roles para cada modulo/controlador del sistema por lo que si no tiene permisos para ese modulo no le muestro el elemento en el menú.

public function getMenuForUser(User $user)
{
$menu = $this->getMenu();

foreach ($menu as $key => $menuItem) {
if (!$this->hasPermission($user, $menuItem)) {
unset($menu[$key]);
}
}

return $menu;
}
Saludos!

 


--
-------------------------------------------------------------------------------------
Daniel González Cerviño
Developer http://desarrolla2.com
Tel (+34) 653 96 50 48
Mail daniel....@freelancemadrid.es
Twiter: http://twitter.com/desarrolla2
Linkedin: http://www.linkedin.com/in/desarrolla2
Github: https://github.com/desarrolla2
-------------------------------------------------------------------------------------

Erick Hernandez

unread,
Jul 31, 2015, 7:26:16 AM7/31/15
to Symfony Madrid, daniel....@freelancemadrid.es
Gracias, ya pude resolverlo usando el Helper render, me parecio bastante sencillo despues de que alguien me lo explico.
Reply all
Reply to author
Forward
0 new messages