Menú contextual

Si hay menús dinámicos (ver sección correspondiente) y dependen de los contextos seleccionados, lo mejor es controlar los contextos lo más temprano posible. El mejor lugar es sobrecargar _init() dentro de Abs_AppController, que es una clase abstracta destinada justo a estos fines que extiende Abs_AdmController.

Ejemplo: añadir contexto del tipo his (historias clínicas) usando la forma:

http://URL/actxt/his/ID

y quitarlo usando

http://URL/dctxt/his/ID

Se haría:

public function _init()
{
    // Atender peticiones de contexto
    if ($this->_segment(0) == 'actxt') { // actxt es para añadir/cambiar el contexto
        $type = $this->_segment(1);
        if ($type != '') {
            switch ($type) {
                case 'his': // type=his ==> historiales
                    {
                        $idHis = (int)\zfx\PKView::unpack($this->_segment(2), 'id');
                        if ($idHis > 0) {
                            $nombrePaciente = Historias::obtNombrePaciente($idHis);
                            ADMContext::add(new ADMContext('his', "HC:", $nombrePaciente, $idHis,
                                $this->_urlController() . 'dctxt/his'));
                        }
                    }
            }
        }
    } elseif ($this->_segment(0) == 'dctxt') { // dctxt es para quitar el contexto
        $type = $this->_segment(1);
        if ($type != '') {
            ADMContext::del($type);
        }
    }
    parent::_init();
}