Допоможіть, будь ласка, зробити дворівневе меню. Я на процедурному стилі розумію як його зробити, а ось на ООП чет не виходить. Я використовую фреймворк Codeigniter. в моделі є функція для виведення основного рівня:
в базі в таблиці menu поля:
для основних пунктів меню в поле parent я прописав none. а ось для підпунктів, якщо підпункт відноситься до фільмів, то parent films і т. д. Скажіть чи правильно почав робити і як вивести підміню для кожного основного меню?
заданий 10 дек '13 о 16:35
витягни з таблиці всі, потім через рекурсію зроби дерево по parent обертаючи кожен рівень в '
- 'І кожна внутрішня підструктура в черговий'
- '- вийде готовий html, c допомогою css попрячь посилання внутрішнього рівня (ul ul), за допомогою js (можна реалізувати і на стороні php) нескладно знайти в дереві посилань поточний URL і додати класи (припустимо' active ') самому елементу' li ' і ланцюжку 'li' елементів вище рівнем, в css відкрити 'ul' який знаходиться в активному елементі 'li' (ul .active) - все. можна додати відкривачки / закривашка субменю - js / css - zippp 11 дек '13 в 8:25
в теорії то воно просто, а не справі не виходить - sew810i9 12 дек '13 о 10:50
По-перше, краще parent зробити числовими, у вас адже у кожного поля є свій ID.
Реалізація приблизно така:
Потім потрібно злегка змінити цей масив:
Тепрь вийшло наступне:
Розберіть кожен пункт окремо, щоб зрозуміти що до чого. Складного тут зовсім нічого немає.
P.S. Код писав швидко, не тестував, так що якщо десь буде загвостка, пишіть я перевірив ще раз.
розібрався! Використав метод _remap () з Codeigniter яка викликається за замовчуванням. Там в залежності від сегмента url виконуються ті чи інші дії. Хоча можна було і самому написати метод, як ви сказали. Я по початку так і хотів, але мабуть десь, де щось пропустив. А ось якщо зайти далі. Створив я пункт меню, наприклад "Програми", повинен адже бути контролер наприклад "programs". Так до ось тут як можна вирішити задачу, що б контролер створювався? Або як це робиться? - sew810i9 22 дек '13 в 10:04