Как динамически переопределить формы и / или представления с помощью Zend? - PullRequest
0 голосов
/ 29 июля 2010

Я работаю над веб-приложением, использующим Zend, которое мы хотели бы отправить с некоторыми стандартными формами и представлениями.Мы бы хотели, чтобы клиент мог создавать собственные формы и / или представления, которые можно было бы поместить в другой каталог, который мог бы переопределять формы по умолчанию.IE, Zend проверил бы, существуют ли какие-либо пользовательские формы (или представления), и если да, загрузите их, в противном случае загрузите формы по умолчанию.

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

Ответы [ 2 ]

3 голосов
/ 30 июля 2010

Как насчет фабричного / сервисного класса, настроенного с вашими префиксами / путями по умолчанию и по умолчанию, чья работа заключается в создании запрошенной формы.Задачей этого фабричного класса было бы сначала проверить наличие настраиваемой формы и вернуться к форме по умолчанию.

Таким образом, у вас могут быть формы по умолчанию с именем вроде My_Form_Default_User, появляющиеся в application/forms/default, а ваши формы по умолчанию с именем что-то вроде My_Form_Custom_User, появляющиеся в application/forms/custom.Тогда клиентский код может вызывать что-то вроде My_FormFactory::createForm('user').

. Альтернативой может быть присвоение формам одинаковых имен (например, My_Form_User) для обоих случаев, но затем настройка автозагрузчика с путями к обоим местоположениям.Если автозагрузчик находит пользовательскую форму, круто.Если нет, он возвращается к местоположению по умолчанию.Но такой подход мне кажется немного более умным.

1 голос
/ 29 июля 2010

Как насчет этого?

В вашем application.ini есть раздел, который будет прочитан перед отображением представления.Настройка по умолчанию будет указывать вашему контроллеру, что он должен загрузить ВАШУ форму, но если клиент хочет загрузить свою собственную форму для данного представления, он может просто удалить соответствующую запись из вашего application.ini (вам, возможно, придется предоставить пользовательскийapplication.ini, который может быть настроен вашим клиентом, но отличается от application.ini, используемого вашим собственным приложением)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...