Menús dinámicos
Los ficheros de configuración que conforman los menús permiten hacer muchas cosas, pero si se necesita acceder a modelos o hacer cosas avanzadas tenemos el problema de que en el momento que se ejecutan los ficheros de configuración todavía no está disponible la autocarga de clases ni otras muchas cosas del framework.
Por eso a veces los menús dinámicos se tienen que configurar a nivel de controlador.
El controlador Abs_AppController es perfecto para eso, ya que está "en blanco" y extiende Abs_AdmController, que tiene una función llamada _getMenuData() que devuelve un array con los datos de vista que va a recibir el menú.
La estructura de menú (lo que casi siempre se va a tocar) está en la clave _groups.
Ejemplo:
protected function _getMenuData()
{
$menu = parent::_getMenuData(); // Este es el menú original
$debemosHacerlo = true; // Supongamos que hay que añadir una nueva subsección de menu
if ($debemosHacerlo) {
$menu['_groups']['clinica']['sections']['consulta']['subsections']['episodios'] = array(
'es' => array('Episodios', '<i class="fas fa-file-medical"></i>'),
'controller' => 'clinica-episodios'
);
}
return $menu; // Devolvemos el menú modificado.
}