J'ai du mal à me familiariser avec la gestion de l'état actif d'un menu lorsque le menu n'est pas utilisé pour le routage.
Je viens de Drupal où le système de menus gère également le routage. ainsi, la définition de l'état actif et de l'état de la piste active est gérée par l'itinéraire (qui agit également comme un système de rendu de menu).
Maintenant, beaucoup de frameworks PHP ont des classes de routeur qui gèrent le routage. Cela semble une bonne séparation car un menu ne devrait pas être au courant de POST || OPTIONS || ... demandes.
Mais lors de l'écriture du frontend, je me suis retrouvé à coder dur le menu. Ou tout stocker dans la base de données et transmettre ces valeurs à une vue. Ce que je n'aime pas, c'est que vous créez en quelque sorte une copie de ce que vous avez déjà écrit dans votre routeur, mais que vous utilisez maintenant la classe Menu.
Un exemple:
Route::get('/somewhere','routename.somewhere','showStuffController');
Route::post('/somewhere','routename.somewhere','saveStuffController');
Menu::add('label.somewhere','routename.somewhere');
Vous séparez les préoccupations ici, donc c'est bien. Mais le menu dépend fortement de Route pour définir son état actif. Le menu devra également connaître la hiérarchie pour définir la piste active.
Alors oui, la définition de la piste active et des classes de statut actives est en fait une chose à voir. Mais ayant
if ( Route::currentName() === $menuitem->getRouteName() ) { print 'active'; }
partout, vos vues semblent stupides. Ensuite, ajoutez tous ces si actifs-si ennuyeux et c'est un vrai ballonnement. Gérer cela avant que la vue ne soit rendue et définir un indicateur de piste active sur vrai semble si moche que je le sache (une boucle foreach sur tous les enfants qui boucle sur tous les enfants, ...)
Ma question est:
Existe-t-il un modèle ou un moyen intelligent pour obtenir ce plus propre, mieux, ...? Comment gérer le «problème» de la piste active?
Je pensais rendre enfant -> parent. Commencez donc avec l'annonce au niveau le plus profond, puis montez. Mais alors l'enfant connaît son parent mais le parent ne sait rien de ses enfants (semble bizarre).
la source