Zend 2: ¿Dónde debería poner este método que actualiza la barra de navegación de un módulo?

Previamente, hice una pregunta sobre las opciones disponibles para insertar una barra de navegación (plantilla) automáticamente por módulo.

Siguiendo una de las sugerencias, agregué una variable de vista en Myapp / Module / Mymodule / Module.php que es la ruta de la plantilla

public function onBootstrap($e) { $viewModel = $e->getApplication()->getMvcEvent()->getViewModel(); $viewModel->subNav = 'mymodule/mymodule/subNav'; } 

Luego, en Application / view / layout / layout.phtml se verificó la presencia de esta variable y se la mostró:

  subNav) : ?>   

Esto funciona exactamente como yo quiero, pero ahora quiero pasar los datos dynamics de la plantilla de una base de datos.

Entonces mi pregunta es esta: está bien hacer esto en Module.php ¿verdad? En onBootstrap () deseo llamar a mi modelo de datos para acceder a mi base de datos y almacenar los resultados en una variable de vista. ¿Este mal uso de Module.php? Se supone que este tipo de operación debe realizarse en un controlador, pero quiero que esta plantilla se inyecte automáticamente sin que mi controlador tenga que saber al respecto. Soy nuevo en MVC y en Zend y quiero asegurarme de que no me violen ningún principio fundamental de diseño.

Solutions Collecting From Web of "Zend 2: ¿Dónde debería poner este método que actualiza la barra de navegación de un módulo?"

cree un asistente de visualización personalizado, cargue sus datos en él y represente su vista y úselo en el diseño

 namespace Application\View\Helper; use Zend\View\Helper\AbstractHelper; class MyNav extends AbstractHelper{ public function __invoke(){ //load your data return $this->view->render('my nav view script',array('data'=>$data)) } } 

en tu archivo de configuración de módulos

 'view_helpers' => array( 'invokables' => array( 'mynav' => 'Application\View\Helper\MyNav', ), ), 

en diseño

 $this->mynav();