Ho problemi a orientarmi nella gestione dello stato attivo di un menu quando il menu non viene utilizzato per il routing.
Vengo da Drupal, dove anche il sistema di menu gestisce il routing. pertanto l'impostazione dello stato attivo e dello stato di traccia attiva viene gestita dal percorso (che funge anche da sistema di rendering dei menu).
Ora, molti framework PHP hanno classi Router che gestiscono il routing. Questa sembra una buona separazione poiché un menu non dovrebbe essere a conoscenza di POST || OPZIONI || ... richieste.
Ma quando ho scritto il frontend, mi sono trovato a scrivere codice nel menu. O archiviando tutto nel DB e passando quei valori a una vista. Quello che non mi piace di questo approccio è che stai creando una copia di ciò che hai già scritto nel tuo router ma ora usando la classe Menu.
Un esempio:
Route::get('/somewhere','routename.somewhere','showStuffController');
Route::post('/somewhere','routename.somewhere','saveStuffController');
Menu::add('label.somewhere','routename.somewhere');
Stai separando le preoccupazioni qui, quindi è carino. Ma Menu dipende fortemente da Route per impostare il suo stato attivo. Il menu dovrà anche conoscere la gerarchia per impostare active-trail.
Quindi sì, impostare la traccia attiva e le classi di stato attivo è in realtà una cosa di vista. Ma avendo
if ( Route::currentName() === $menuitem->getRouteName() ) { print 'active'; }
dappertutto le tue opinioni sembrano stupide. Quindi aggiungi tutti quei fastidiosi if attivi ed è un vero e proprio gonfiore. Gestire che prima che la vista venga renderizzata e impostare una flag di traccia attiva su true sembra così brutto come lo so io (una foreach che si ripercuote su tutti i bambini che si sovrappongono a tutti i bambini, ...)
La mia domanda è:
C'è un modello o un modo intelligente per ottenere questo più pulito, migliore, ...? Come si dovrebbe gestire il 'problema' active-trail?
Stavo pensando di rendere figlio -> genitore. Quindi inizia con l'annuncio al livello più profondo e poi sali su. Ma poi il bambino conosce il suo genitore ma il genitore non sa nulla dei suoi figli (sembra strano).