Ho problemi a capire come gestire un menu quando il menu non è utilizzato per il routing.
Vengo da Drupal, dove il sistema di menu gestisce anche il routing. quindi l'impostazione dello stato attivo e dello stato del percorso attivo viene gestita dal percorso (che funge anche da sistema di rendering dei menu).
Ora, molti framework PHP hanno classi di router che gestiscono il routing. Sembra una buona separazione dal momento che un Menu non dovrebbe essere a conoscenza del POST || OPZIONI || ... richieste.
Ma quando ho scritto il frontend mi sono trovato a dover codificare il menu. O memorizzare tutto nel DB e passare quei valori a una vista. Quello che non mi piace di questo approccio è che si sta 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 è bello. Ma Menu dipende molto da Route per impostare il suo stato attivo. Il menu dovrà anche conoscere la gerarchia per impostare la traccia attiva.
Quindi sì, impostare la traccia attiva e le classi di stato attive sono in realtà una cosa da vedere. Ma avendo
if ( Route::currentName() === $menuitem->getRouteName() ) { print 'active'; }
ovunque le tue opinioni sembrano stupide. Quindi aggiungi tutte quelle fastidiose tracce attive se è ed è davvero gonfio. Gestirlo prima che la vista abbia i rendering e impostare un flag di traccia attiva su true sembra così brutto come faccio io a sapere (un ciclo foreach su tutti i bambini che passano su tutti i bambini, ...)
La mia domanda è:
C'è un modello o un modo intelligente per ottenere questo pulitore, meglio, ...? Come si dovrebbe gestire il "problema" della pista attiva?
Stavo pensando di renderizzare child - > genitore. Quindi inizia con l'annuncio al livello più profondo e poi prosegui verso l'alto. Ma poi il bambino sa del suo genitore, ma il genitore non sa nulla dei suoi figli (sembra strano).