Hola amigos.
Estoy realizando una clase para mostrar un menu anidado.
La clase es esta:
Código PHP:
Ver originalclass menu
{
//Mostramos los menus, declarando antes las variables necesarias para mantener las secciones activas.
private $ruta;
private $var_get;
private $nombre_enlace;
private $nivel;
public function imprimir_menu($ruta, $var_get, $nombre_enlace, $nivel = 0)
{
$this->ruta=$ruta;
$this->var_get=$var_get;
$this->nombre_enlace=$nombre_enlace;
$this->nivel=$nivel;
//Llamo a la funcion nivel para empezar a construir el menu en funcion de las variables pasadas.
$this->nivel();
}
public function imprimir_submenu($ruta, $var_get, $nombre_enlace)
{
$this->ruta=$ruta;
$this->var_get=$var_get;
$this->nombre_enlace=$nombre_enlace;
//Llamo a la funcion nivel para empezar a construir el menu en funcion de las variables pasadas.
$this->construyo_submenu();
}
//Si la variable nivel es igual a 1, es porque se quiere mostrar el menu si el usuario es de nivel 1
private function nivel()
{
if ($this->nivel == 1)
{
if (isset($_SESSION['nivel']) && $_SESSION['nivel'] == 1) {
$this->construyo_menu();
}
}
else
{
$this->construyo_menu();
}
}
//Seleccionamos si el <li> será seccion activa o no.
private function seccion_activa ()
{
/*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ú.*/
if(isset($_SESSION['seccion']) && $_SESSION['seccion'] == minusculas
($this->nombre_enlace)) {
return '<li class="seccion_activa">';
}
else
{
if (isset($_GET['seccion']) && $_GET['seccion'] == minusculas
($this->nombre_enlace)) {
$_SESSION['seccion'] = $_GET['seccion'];
return '<li class="seccion_activa">';
}
else
{
return '<li>';
}
}
}
//Construimos el menu en funcion a lo que devuelve la variable nivel y a las variables para seccion y subseccion
private function construyo_menu()
{
$inicio = $this->seccion_activa();
echo $inicio.'<h3><a href="'.$this->ruta.'?'.$this->var_get.'">'.$this->nombre_enlace.'</a></h3>';
}
private function construyo_submenu()
{
echo '<li><h4><a href="'.$this->ruta.'?'.$this->var_get.'">'.$this->nombre_enlace.'</a></h4></li>';
}
}
Y la forma de llamarla, esta:
Código PHP:
Ver original<ul>
<?php
//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.
$menu_lat_izqdo = new menu();
$menu_lat_izqdo->imprimir_menu('../../paginas/cuentas/cuentas.php','seccion=cuentas&subseccion=cuentas','Cuentas');
echo '<ul>';
$menu_lat_izqdo->imprimir_submenu('../../paginas/cuentas/cuentas.php','seccion=cuentas&subseccion=cuentas','Cuentas');
$menu_lat_izqdo->imprimir_submenu('../../paginas/cuentas/cuentas.php','seccion=cuentas&subseccion=cuentas','Cuentas');
echo '</ul>';
echo '</li>';
$menu_lat_izqdo->imprimir_menu('../../paginas/cuentas/busquedas.php','seccion=busquedas&subseccion=busquedas','Busquedas');
?>
</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.