Я хотел бы получить некоторые отзывы о моей архитектуре. Мой проект Zend Framework содержит несколько модулей и модули, которые мы создаем. Это немного отличается от стандартного ZF-приложения, поскольку несколько модулей могут создавать одну страницу. Например, страница контактов состоит из текста детали (текстового модуля) и контактной формы (контактного модуля). Или на странице с тремя столбцами есть три текстовых модуля, работающих на одной странице. Пока все хорошо (все это отлично работает).Рекомендации по архитектуре ZF admin
интерфейс администратора
Теперь наш администратор. В интерфейсе администратора мы редактируем одну страницу (а не один модуль!), Что затрудняет ее работу. Одна страница может иметь один или несколько экземпляров Zend_Form. Например, текст может быть отредактирован с помощью текстового поля, форма контакта - с некоторыми полями ввода. Они должны отображаться в представлении как подформы большего экземпляра Zend_Form. Также должен отображаться html (просмотр скриптов), например, для перечисления статей или проектов блога из портфеля. Не все модули «администрируются» (например, наша карта сайта, ничего не нужно настраивать), но тем, кто есть, необходимо поддерживать создание, обновление и удаление.
Текущая архитектура
Сейчас мы работаем с услугами. Легко проверить (существует класс Portfolio_Service_Admin и реализует ли он Admin_Service_AdminInterface?). Но портфель уже усложняется: услуга действует как своего рода контроллер и поддерживает создание, обновление и удаление портфеля, а также CRUD портфельных категорий и CRUD портфельных проектов (в одном классе!).
Если это не ясно, я могу добавить больше информации о нашем текущем подходе
Что же тогда?
Поскольку служба действует теперь как своего рода контроллер, я думал о контроллерах (duh). Единственным недостатком является то, что контроллеру необходимо вернуть форму, чтобы добавить эту форму модуля в качестве подформы большей формы (и не добавленной к ответу!). Кроме того, несколько модулей на одной странице приводят к множеству итераций диспетчерского прохода, что не очень эффективно.
Итак: есть ли у вас какие-либо предложения, как контролировать это?
Значит, в вашей области администратора при редактировании страницы, где Zend_Form с множеством субформ подает? У вас есть какой-то контроллер страниц, который достаточно интеллектуальный, чтобы пройти через подформы и делегировать каждую часть в соответствующий модуль? –
Да, все работает уже с моим сервисом (и, вероятно, не изменится, если я смогу наконец использовать новый метод). Admin_Service_Form принимает Application_Model_Page, поэтому служба знает, какие модули находятся на странице. Затем, следовательно, всем моделям предлагается вернуть форму, если они, конечно, администрируются. И после POST служба снова вызывает модули, чтобы принять их изменения. Даже 18n реализовано :) –