У мене виникають проблеми з обробкою меню в активному стані, коли меню не використовується для маршрутизації.
Я родом з Drupal, де система меню також обробляє маршрутизацію. тому налаштування активного стану та стану активного сліду обробляється маршрутом (який також діє як система візуалізації меню).
Зараз у багатьох фреймворках PHP є класи маршрутизаторів, які керують маршрутизацією. Це здається хорошим розділенням, оскільки Меню не повинно знати про POST || ВАРІАНТИ || ... запити.
Але під час написання фронтену мені стало важко кодувати меню. Або зберігання всього в БД і передача цих значень до перегляду. Мені не подобається такий підхід - це те, що ти наче створюєш копію того, що ти вже написав у своєму маршрутизаторі, але тепер використовуєш клас меню.
Приклад:
Route::get('/somewhere','routename.somewhere','showStuffController');
Route::post('/somewhere','routename.somewhere','saveStuffController');
Menu::add('label.somewhere','routename.somewhere');
Ви розділяєте тут проблеми, тож це приємно. Але меню сильно залежить в маршруті, щоб встановити його активний стан. У меню також потрібно знати про ієрархію, щоб встановити активний слід.
Так що так, встановлення активного сліду та активних класів статусу насправді є предметом перегляду. Але маючи
if ( Route::currentName() === $menuitem->getRouteName() ) { print 'active'; }
всі ваші погляди здаються дурними. Потім додайте всі ті дратівливі активні сліди, якщо це, і це справжній роздут. Повідомлення, що перед тим, як подання відображається, і встановлення прапорця активного контуру на істинне просто здається настільки потворним, як я це знаю (передбачення, що циркулює над усіма дітьми, що переходить на всіх дітей, ...)
Моє запитання:
Чи існує закономірність чи розумний спосіб отримати цей очищувач, краще, ...? Як слід вирішувати "проблему" активного сліду?
Я думав передати дитину -> батьків. Тож починайте з реклами найглибший рівень, а потім працюйте вперед. Але тоді дитина знає про свого батька, але батько нічого не знає про своїх дітей (здається дивним).