Ich habe Probleme, mich mit der aktiven Bearbeitung eines Menüs zu befassen, wenn das Menü nicht für das Routing verwendet wird.
Ich komme aus Drupal, wo das Menüsystem auch das Routing übernimmt. Das Einstellen des aktiven Status und des aktiven Trail-Status wird also von der Route übernommen (die auch als Menü-Rendering-System fungiert).
Viele PHP-Frameworks verfügen jetzt über Router-Klassen, die das Routing übernehmen. Dies scheint eine gute Trennung zu sein, da ein Menü POST || nicht kennen sollte OPTIONEN || ... Anfragen.
Aber als ich das Frontend schrieb, fiel es mir schwer, das Menü zu codieren. Oder alles in der Datenbank speichern und diese Werte an eine Ansicht übergeben. Was mir an diesem Ansatz nicht gefällt, ist, dass Sie eine Kopie dessen erstellen, was Sie bereits in Ihrem Router geschrieben haben, aber jetzt die Menüklasse verwenden.
Ein Beispiel:
Route::get('/somewhere','routename.somewhere','showStuffController');
Route::post('/somewhere','routename.somewhere','saveStuffController');
Menu::add('label.somewhere','routename.somewhere');
Sie trennen hier Bedenken, das ist schön. Das Menü hängt jedoch stark von der Route ab, um den aktiven Status festzulegen. Das Menü muss auch über die Hierarchie Bescheid wissen, um den aktiven Pfad festzulegen.
Ja, das Festlegen eines aktiven Trails und aktiver Statusklassen ist eigentlich eine Ansichtssache. Aber mit
if ( Route::currentName() === $menuitem->getRouteName() ) { print 'active'; }
Überall scheinen deine Ansichten dumm zu sein. Fügen Sie dann all diese nervigen Active-Trail-Ifs hinzu und es ist ein echtes Aufblähen. Das zu handhaben, bevor die Ansicht gerendert wird, und das Setzen eines Active-Trail-Flags auf true, scheint so hässlich, wie ich es kenne (eine foreach-Schleife über alle Kinder, die alle Kinder durchläuft, ...)
Meine Frage ist:
Gibt es ein Muster oder einen intelligenten Weg, um diesen Reiniger besser zu machen, ...? Wie soll man mit dem Active-Trail-Problem umgehen?
Ich dachte daran, Kind -> Eltern zu rendern. Beginnen Sie also mit der Anzeige auf der tiefsten Ebene und arbeiten Sie sich dann nach oben. Aber dann weiß das Kind über seine Eltern Bescheid, aber die Eltern wissen nichts über seine Kinder (scheint seltsam).