2009-06-27 2 views
2

Привет, Я создаю собственную инфраструктуру PHP MVC. Не с намерением использовать его. Но я пытаюсь изучить PHP5 OO и шаблон дизайна MVC.Построение меню MVC в PHP

Я прочитал много учебников и получил основы, но теперь я застрял, так как вещи становятся все более сложными.

В моей структуре используется следующая структура URL:/controller/action. Необязательно, за которым следует некоторое количество переменных, например./Продукта/вид/1.

До сих пор у меня было два отдельных контроллера: страница и продукт. Я не буду включать их в одно меню. Я пытаюсь установить следующую структуру меню. Корреспондентский URL-адрес находится между скобками.

  • Наша компания (/ страница/просмотр/2)
    • Werkwijze (/ страница/вид/3)
    • Staff (/ страница/просмотр/4)
  • Наши продукты (/ продукт/индекс)
    • Хлеб (/ продукт/категория/1)
    • Banket (/ продукт/категория/2)
    • торт (/ продукт/категория/3)
  • Контакт (/ страница/просмотр/5)

Поэтому в основном я получил главное меню и подменю. Есть несколько требований, которые я определил для класса меню:

  • Текущий элемент должен иметь другой класс CSS в меню.
  • Если текущий элемент имеет родительский элемент, который должен иметь другой класс CSS.
  • Меню следует расширять, используя все виды контента URL.
  • И для бонусных очков: когда я выбираю продукт из категории Хлеб. Скажем,/product/view/1; то я хотел бы также выделить элементы меню «Наши продукты» и «Хлеб».

У меня есть копия моей «рамки», которая работает здесь: http://www.eriknijland.nl/stackoverflow/. Содержимое находится на голландском языке, а меню - только статический HTML.

Исходный код доступен для загрузки, а также в папке:

  • /stackoverflow/source/framework.zip
  • /stackoverflow/source/framework.sql

Любое другое комментарии по моему коду также приветствуются: P.

+0

сладкий +15 символов – bobobobo

ответ

1

Весь код для построения, который должен находиться в уровне представления приложения. Конечно, в структуре должны быть предусмотрены методы, чтобы знать, что модуль и действие активны, но поведение меню должно быть реализовано в приложении, а не в рамках.

Другим вариантом было бы разработать структуру, чтобы она предоставляла некоторые помощники для автоматического создания меню. В этом случае все должно быть реализовано в пределах уровня представления фреймворка.

+0

Ну, спасибо ... но как насчет меню «класс библиотеки» (как часть рамки, а не только для приложения). Контроллеры могут добавлять активные пункты меню для каждого меню. Но с другой стороны. Это представление требует меню. Я также получил запланированные XML-представления, им не нужно меню. Или, может быть, контроллер должен добавлять только активные элементы в зависимости от вида. Просто подумайте вслух здесь ... – Erik

+0

Вы не видите библиотеки меню или помощники в рамках MVC. Вы хотите, чтобы человек мог полностью использовать гибкость и настройку для своего меню. Помните, что вы создаете инфраструктуру MVC здесь, а не CMS (что в этом случае библиотека меню будет в порядке). – jimyi

+0

@jimyi Я не уверен, как определить структуру или CMS. Но я думаю, что моя «структура» на самом деле является CMS. Поскольку почти все мои классы имеют пользовательскую функциональность, созданную специально для демонстрационного сайта. Моего списка дел на завтра: - создать шаблон класса - пусть класс шаблона создать класс меню - контроллеры используют для уведомления меню (корыта шаблонного класса?) Активных элементов - пусть контроллер визуализации шаблона - шаблон отображает меню Пожалуйста, исправьте меня, если я ошибаюсь. – Erik