Я использую Zend Framework, и в настоящее время у меня есть существующая форма с использованием zend-формы, которая функционирует по мере необходимости.
Я хочу добавить к нему еще одно необязательное текстовое поле, но разрешить пользователю выбирать отображение поля, а также отображать его несколько раз. например, регистрационная форма пользователя с областью «альтернативных адресов электронной почты», позволяющая пользователю добавлять дополнительные текстовые поля для каждого из своих адресов электронной почты.
К сожалению, я не уверен, как это сделать. Я думаю, что подформы могут быть способом продвижения вперед, но не слишком уверенными.
В идеальном случае, как только форма будет отправлена, мне нужны данные в массиве, чтобы потом обработать ее для хранения в таблице MySQL.
Смотрите превосходный пост Джереми Кендалла по динамическому добавлению полей в форму:
Динамическое добавление элементов в Zend_Form
Upshot – использовать jQuery на стороне клиента для добавления полей и ведения реестра новых полей. Затем на стороне сервера вызовите новый preValidate()
объекта формы, который проверяет опубликованный реестр и добавляет обязательные поля в объект $form
перед стандартной обработкой – как isValid()
и getValues()
– вызывается.
Почему бы вам не сделать вызов AJAX для метода addfieldAction (), в котором вы создаете HTML другого текстового поля и возвращаете его? Вы все еще можете использовать форму Zend, и вся форма может быть обработана обычным способом.