Witam,
piszę małego CMS'a i chciałbym się was doradzić jak zaprojektować menu od środka.
Otóż chcę stworzyć podobny mechanizm jaki jest np w Joomli. Otóż na mojej stronie mam szereg, nazwijmy to modułów. I chcę dać możliwość dodawania tych modułów w formie drzewiastej.
Sprawa ma wyglądać tak: dodaję nowe Menu. Do niego dodają np Artykuł, po nim galerię zdjęć a później jakiś link zewnętrzny... Tylko za bardzo nie wiem jak to zaprojektować w bazie. Każdy moduł ma swoją tabelkę w bazie danych. W załączniku podsyłam (nie wiem czy poprawny) UML z tego co ja zrobiłem.
Rozwiązanie niby działa, ale ma swoje wady. Otóż w Menu_Element::$object_id
podaję identyfikator danego obiektu, np artykułu. W Menu_Type
podaję nazwę klasy, którą chcę utworzyć przy tworzeniu menu. Czyli wpisuję tam np Model_Article
. Później literuję po Menu_Element, robiąc JOIN'a z Menu_Type i niby działa :P jednak, gdy usunę artykuł, to wpis pozostaje, a nie ma za bardzo jak zrobić relację, aby takie wpisy same się usuwały.
Moje pytanie brzmi: jak rozwiązać to w jakiś dobry sposób? Dodać do każdego modułu kolejną tabelkę z relacją Moduł->Element_Menu? Czy jakoś inaczej to zaprojektować?