Как обрабатывать Zend SubForms, когда номер каждого неизвестен - PullRequest
0 голосов
/ 15 февраля 2012

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

<input type="text" name="contacts[0][fname]" />
<input type="text" name="contacts[0][sname]" />

Но пользователь может захотеть добавить еще один контакт, который будет дублировать элементы с помощью javascript, чтобы получить следующее:

<input type="text" name="contacts[0][fname]" />
<input type="text" name="contacts[0][sname]" />
<br />
<input type="text" name="contacts[1][fname]" />
<input type="text" name="contacts[1][sname]" />

Я знаю, как создать первый набор элементов, однако, если форма отправляется и возникают ошибки, как я могу гарантировать, что отображается правильное количество элементов 'contacts'?

1 Ответ

0 голосов
/ 15 февраля 2012

Мне никогда не приходилось делать это с Zend_Form, но я делал это с sfForm Symfony 1.4, который имеет похожий API и теорию работы. Исходя из этого, основной процесс:

  1. В конструкторе родительских форм инициализировать некоторое количество стандартных форм по умолчанию. Вы захотите выделить логику для фактического создания и встраивания n подчиненных форм в отдельный метод (ы). Я буду называть это методом emebedContacts($count = 1)

  2. Переопределите методы isValid и setDefaults в родительской форме, чтобы они определяли количество подчиненных форм в передаваемых им аргументах $data и затем вызывали embedContacts перед вызовом parent::isValid() или parent::setDefaults().

Надеюсь, это поможет.

...