Saya mengalami kesulitan untuk menangani penanganan menu aktif saat menu tidak digunakan untuk perutean.
Saya berasal dari Drupal di mana sistem menu menangani perutean juga. jadi pengaturan keadaan aktif dan keadaan jejak aktif ditangani oleh rute (yang juga berfungsi sebagai sistem rendering menu).
Sekarang, banyak kerangka kerja PHP memiliki kelas Router yang menangani perutean. Ini sepertinya pemisahan yang baik karena Menu seharusnya tidak menyadari POST || PILIHAN || ... permintaan.
Tetapi ketika menulis frontend, saya mendapati diri saya sendiri kesulitan mengode menu. Atau menyimpan segala sesuatu di DB dan meneruskan nilai-nilai itu ke tampilan. Apa yang saya tidak suka dari pendekatan ini adalah bahwa Anda semacam membuat salinan dari apa yang sudah Anda tulis di Router Anda tetapi sekarang menggunakan kelas Menu.
Sebuah contoh:
Route::get('/somewhere','routename.somewhere','showStuffController');
Route::post('/somewhere','routename.somewhere','saveStuffController');
Menu::add('label.somewhere','routename.somewhere');
Anda memisahkan masalah di sini, jadi itu bagus. Tetapi Menu sangat bergantung pada Route untuk mengatur status aktifnya. Menu juga harus tahu tentang hierarki untuk mengatur jejak-aktif.
Jadi ya, mengatur jejak aktif, dan kelas status aktif sebenarnya adalah hal tampilan. Tetapi memiliki
if ( Route::currentName() === $menuitem->getRouteName() ) { print 'active'; }
seluruh pandanganmu tampak bodoh. Kemudian tambahkan semua jejak aktif yang mengganggu itu dan itu benar-benar menyenangkan. Menangani bahwa sebelum tampilan mendapat rendering dan mengatur flag jejak-jalan ke true sepertinya sangat jelek seperti yang saya tahu (peramalan foreach atas semua anak yang melingkari semua anak, ...)
Pertanyaanku adalah:
Apakah ada pola atau cara cerdas untuk mendapatkan pembersih ini, lebih baik, ...? Bagaimana seharusnya seseorang menangani 'masalah' jejak-aktif?
Saya sedang memikirkan rendering child -> parent. Jadi mulailah dengan iklan tingkat paling dalam dan kemudian naik ke atas. Tetapi kemudian anak itu tahu tentang orang tuanya tetapi orang tuanya tidak tahu apa-apa tentang anak-anaknya (tampak aneh).