У меня нет времени сейчас вдаваться в детали кодирования, но вот как бы я это сделал:
Поскольку вы хотите, чтобы структура вашей формы (а не только ее данные) была редактируемой, вам нужно будет создать ее экземпляр и сохранить в сеансе.
Вместо того, чтобы просто генерировать какую-то дополнительную разметку HTML, вам нужно будет выполнить Ajax-вызов на ваш сервер. Действие, вызываемое таким образом при нажатии кнопки «Добавить», изменит хранилище экземпляров Zend_Form
в вашем сеансе. Вызов Ajax может затем вернуть либо дополнительную разметку для вставки, либо новую версию всей разметки формы.
В первом случае это будет зависеть от вашего кода JavaScript, чтобы гарантировать, что разметка будет вставлена таким образом, чтобы отображение в браузере соответствовало представлению Zend_Form
на сервере. В последнем случае - когда возвращается вся форма - пользовательский ввод должен был бы быть передан в вызове Ajax, или он был бы потерян, если форма заменена на новую версию.