Ver Mensaje Individual
  #1 (permalink)  
Antiguo 12/09/2011, 11:14
AitorLopez
 
Fecha de Ingreso: mayo-2009
Mensajes: 742
Antigüedad: 15 años
Puntos: 6
Modificar forma de llamar a una clase de un menu

Hola amigos.

Estoy realizando una clase para mostrar un menu anidado.

La clase es esta:

Código PHP:
Ver original
  1. class menu
  2. {
  3.     //Mostramos los menus, declarando antes las variables necesarias para mantener las secciones activas.
  4.     private $ruta;
  5.     private $var_get;
  6.     private $nombre_enlace;
  7.     private $nivel;
  8.  
  9.     public function imprimir_menu($ruta, $var_get, $nombre_enlace, $nivel = 0)
  10.     {
  11.         $this->ruta=$ruta;
  12.         $this->var_get=$var_get;
  13.         $this->nombre_enlace=$nombre_enlace;
  14.         $this->nivel=$nivel;
  15.         //Llamo a la funcion nivel para empezar a construir el menu en funcion de las variables pasadas.
  16.         $this->nivel();
  17.     }
  18.    
  19.     public function imprimir_submenu($ruta, $var_get, $nombre_enlace)
  20.     {
  21.         $this->ruta=$ruta;
  22.         $this->var_get=$var_get;
  23.         $this->nombre_enlace=$nombre_enlace;
  24.         //Llamo a la funcion nivel para empezar a construir el menu en funcion de las variables pasadas.
  25.         $this->construyo_submenu();
  26.     }
  27.    
  28.     //Si la variable nivel es igual a 1, es porque se quiere mostrar el menu si el usuario es de nivel 1
  29.     private function nivel()
  30.     {
  31.         if ($this->nivel == 1)
  32.         {
  33.             if (isset($_SESSION['nivel']) && $_SESSION['nivel'] == 1)
  34.             {
  35.                 $this->construyo_menu();
  36.             }
  37.         }
  38.         else
  39.         {
  40.             $this->construyo_menu();
  41.         }
  42.     }
  43.     //Seleccionamos si el <li> será seccion activa o no.
  44.     private function seccion_activa ()
  45.     {
  46.         /*En los enlaces, le paso una variable con el nombre de donde he pulsado y cuando vuelvo a cargar esta pagina, según la variable que exista con ese nombre, le pongo a la etiqueta li la clase seccion activa, para que se quede marcado en azul oscuro en que lugar del menu estoy. Esto lo tengo que hacer con todas las opciones del menú.*/
  47.         if(isset($_SESSION['seccion']) && $_SESSION['seccion'] == minusculas($this->nombre_enlace))
  48.         {
  49.             return '<li class="seccion_activa">';
  50.         }
  51.         else
  52.         {
  53.             if (isset($_GET['seccion']) && $_GET['seccion'] == minusculas($this->nombre_enlace))
  54.             {
  55.                 $_SESSION['seccion'] = $_GET['seccion'];
  56.                 return '<li class="seccion_activa">';
  57.             }
  58.             else
  59.             {
  60.                 return '<li>';
  61.             }
  62.         }
  63.     }
  64.    
  65.     //Construimos el menu en funcion a lo que devuelve la variable nivel y a las variables para seccion y subseccion
  66.     private function construyo_menu()
  67.     {
  68.         $inicio = $this->seccion_activa();
  69.         echo $inicio.'<h3><a href="'.$this->ruta.'?'.$this->var_get.'">'.$this->nombre_enlace.'</a></h3>';
  70.     }
  71.  
  72.     private function construyo_submenu()
  73.     {
  74.         echo '<li><h4><a href="'.$this->ruta.'?'.$this->var_get.'">'.$this->nombre_enlace.'</a></h4></li>';
  75.     }
  76. }

Y la forma de llamarla, esta:

Código PHP:
Ver original
  1. <ul>
  2.         <?php
  3.         //4 variables: 1ª:Ruta. 2ª:Variables get. 3ª:Nombre menu. 4ª:Variable opcional: Si queremos mostrar el menu en funcion del nivel del usuario, ponemos 1, si no, no ponemos nada.
  4.         $menu_lat_izqdo = new menu();
  5.         $menu_lat_izqdo->imprimir_menu('../../paginas/cuentas/cuentas.php','seccion=cuentas&subseccion=cuentas','Cuentas');
  6.             echo '<ul>';
  7.                 $menu_lat_izqdo->imprimir_submenu('../../paginas/cuentas/cuentas.php','seccion=cuentas&subseccion=cuentas','Cuentas');
  8.                 $menu_lat_izqdo->imprimir_submenu('../../paginas/cuentas/cuentas.php','seccion=cuentas&subseccion=cuentas','Cuentas');
  9.         echo '</ul>';
  10.         echo '</li>';
  11.         $menu_lat_izqdo->imprimir_menu('../../paginas/cuentas/busquedas.php','seccion=busquedas&subseccion=busquedas','Busquedas');
  12.         ?>
  13.   </ul>

Lo importante son los metodos construyo_menu, construyo submenu y la forma de llamarlos.

La idea es quitar, cuando llamo a los menus, los echo <ul>, echo </ul> y echo </li> e incluirlos en la clase, pero despues de darle muchas vueltas, no veo la forma, por eso recurro a vosotros.

Gracias. Un saludo.