[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: вложенные меню или что-то подобное
Serdg
Здравствуйте! я совсем едавно начал изучать ООП в PHP, интересная очень тема, и пробую практиковаться в создании самописного MVC, к примеру взял попробовать меню следующего типа:
  • Главная
  • Новости
  • Уроки
  • программы

под новости выделена отдельная таблица в БД, у программ есть дополнительный выбор ну как там обычно бывает к примеру: архиваторы, антивирусы и т.д., а в уроках есть аж несколько дополнительных выборов например как:
  • Русский
  • Английский
  • Немецкий

а у каждого языка
  • грамматика
  • фонетика
  • лексика

подскажите как можно это реализовать в MVC, вернее сколько таблиц делать в БД, и как лучше сделать, ну например чтобы запрос GET был уроки - контроллер, английский - экшен, а грамматика - параметр или правильнее сделать например так:
  • Главная
  • Новости
  • Уроки
    • Русский
    • Английский
    • Немецкий
  • программы

и обращаться как английский - контроллер, грамматика - экшен?

я наверно запутанно объяснил конечно, но может поймёте что я имею в виду!)
может кто знает ссылки на подобные примеры, потомучто я сколько не искал примера MVC системы, всё попадаются простые до ужаса, и меню без вложений
SoMeOnE
Тебе скорее про рутер(router) надо читать.
Вложенность особой роли не играет.
Просто нужно допустим такую ссылку
http://example.com/language/name/grammatika
отправлять на олин контроллер, а допустим такой
http://example.com/language/name/fonetika на другой.
Где под name может придти что угодно от a-z. Или же строго ограничить в ствоем случае тремя языками.

Да и теже ссылки которые я привел возможно даже должны вести на один и тот же контроллер если там просо статическая страница. Т.е в этом случае буде только запрос в базу различаться по url или по id
Serdg
ну вот у меня сейчас например система такая:
сначала идёт самый так сказать главный контроллер - FrontController
у него метод rout, который выбирает какой контроллер и метод в дальнейшем автоматически выбирать
вобщем из строки http://example.com/language/english в моём случае language - контроллер, а english - экшен, всё что дальше в строке идут параметры
правильно ли это?

ну пока всё так сказать автоматизированно! дальше хуже, в меню как написано выше такого типа:
  • Главная
  • Новости
  • Уроки
    • Русский
    • Английский
    • Немецкий
  • программы
при нажатии например на новости в строку GET попадает http://beta/news/ роутер у меня в таком случае выбирает NewsController как контроллер а в качестве экшена по умолчанию indexAction при этом таблица в базе данных под каждый пункт меню своя, то-есть в данном случае выбирается таблица newsTable!
Но с вложенными менюшками проблема возникает, неполучается чтобы всё выбиралось автоматически, руками дописывать приходится, к примеру для меню есть таблица где три поля id, title - для названия пунктов меню, flag - принимает два значения пусто или tru, если tru, то у данного пункта есть подпункты, то-есть в данном случае таблица для меню следующия:


id-----title--------------flag
1------Главная
2------Новости
3------Уроки-----------tru
4------программы


для дополнительного меню есть другая таблица DopMenu
суть в том, что таблицы для новостей и программ сразу содержат описание и сам текст
и ненужно прыгать с таблицы на таблицу, а в разделе уроки сначала перескакиваем на другую таблицу, где выбор немецкий английский французский, берём идентификатор, потом нужно идти в следующую таблицу где выбор из грамматики лексики и фонетики, опять берём ещё один идентификатор и наконец заходим в ещё одну таблицу где сравниваем идентификаторы для выбора языка и его разделов и самого текста и описания вобщем всей информации! это правильно? или есть нормальные варианты другие?
как вобще правильно создавать и связывать между собой таблицы? в курсах специалиста вроде бы так и показывали связь таблиц как у меня сейчас, хотя может ошибаюсь!
просто из-за этого множества таблиц для дополнительных меню не получается довести до автоматизма всё!

снова наверно написал непонятно, ну да ладно, если может кто знает ссылку на пример сложной MVC системы с реализацией меню, вложенных меню, нескольких разделов, а то всюду простые где пара пунктов в меню и два контроллера это просто сильно, вот захотел разобраться с примером посложнее и реально сложно реализовать незнавши, вернее так если подумать то сказать просто что вот тут идентификатор взять тут экшен добавить и всё работает, а начинаешь писать и не получается реализовать((
Serdg
мда, и никто подсказать не может((
SlavaFr
Долго подсказывать придется, так как тема довольно обширная и люди для этих целей давно готовые движки или CMS используют.
Страница состоит из многих элементов и модулей и меню является одним из этих элементов
Во всех знакомых фрамеворках имеются готовые меню или примеры, как их делать.
Попробуй так же ввести в поисковик "php navigation menu example"

_____________
↓↓↓↓↓↓↓↓↓↓
ответ может быть здесь
или в mysql_error();
Michael
Цитата (Serdg)
был уроки - контроллер, английский - экшен, а грамматика - параметр или правильнее сделать

не, что то не то.
Контроллер - это связанный набор страниц сайта. Например - "Все что связано с уроками".
Действие - определенная страница из набора страниц. Например показать список тизеров уроков.
Если для этого действия нужны какие то уточнения, то они идут как параметры. Те же - "Русский", "грамматика".
Менюшки же не связаны напрямую с твоими контроллерами и действиями. Это элементы навигации и как их создавать - тебе решать.
Можно в шаблоне прописать, а можно и из базы доставать пункты. Все это надо делать самому и отдельно.

_____________
There never was a struggle in the soul of a good man that was not hard
Serdg
спасибо огромное ребят за все ответы, буду пытаться, пробовать, реализовывать!)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.