Tengo problemas para entender el manejo del estado activo de un menú cuando el menú no se utiliza para el enrutamiento.
Vengo de Drupal, donde el sistema de menús también maneja el enrutamiento. Por lo tanto, la ruta maneja el estado activo y el estado de ruta activa (que también actúa como un sistema de representación de menú).
Ahora, muchos frameworks PHP tienen clases de enrutador que manejan el enrutamiento. Esto parece una buena separación ya que un Menú no debe estar al tanto de POST || OPCIONES || ... peticiones.
Pero al escribir el frontend, me encontré codificando el menú. O almacenar todo en la base de datos y pasar esos valores a una vista. Lo que no me gusta de este enfoque es que estás creando una copia de lo que ya escribiste en tu enrutador pero ahora estás usando la clase Menú.
Un ejemplo:
Route::get('/somewhere','routename.somewhere','showStuffController');
Route::post('/somewhere','routename.somewhere','saveStuffController');
Menu::add('label.somewhere','routename.somewhere');
Estás separando las preocupaciones aquí, así que eso es bueno. Pero el menú depende en gran medida de la ruta para establecer su estado activo. El menú también tendrá que saber acerca de la jerarquía para establecer el seguimiento activo.
Entonces, sí, establecer rutas activas y clases de estado activo es realmente una cuestión de visualización. Pero teniendo
if ( Route::currentName() === $menuitem->getRouteName() ) { print 'active'; }
todo sobre tus puntos de vista parece estúpido. A continuación, agregue todos esos molestos si-senderos activos y es una verdadera hinchazón. Manejar eso antes de que la vista se muestre y establecer un indicador de ruta activa en verdadero parece tan feo como lo sé (un foreach que recorre a todos los niños que recorre a todos los niños, ...)
Mi pregunta es:
¿Existe un patrón o una forma inteligente de obtener este limpiador, mejor, ...? ¿Cómo se debe manejar el 'problema' del camino activo?
Estaba pensando en hacer niño -> padre. Así que comience con el anuncio al nivel más profundo y luego vaya ascendiendo. Pero entonces el niño sabe acerca de su padre, pero el padre no sabe nada acerca de sus hijos (parece extraño).
fuente