У меня есть форма, где некоторые поля выглядят как строки, поэтому я могу добавить / удалить их с помощью JS.
Например:
Поле с ID = 1 (существующая строка)
<input id="id[1]" type="text" name="id[1]" value="1" />
<input id="name[1]" type="text" name="name[1]" value="100" />
Поле с ID = 2 (существующая строка)
<input id="name[2]" type="text" name="name[2]" value="200" />
<input id="name[2]" type="text" name="name[2]" value="200" />
новая строка, созданная по умолчанию (чтобы добавить еще одну строку к существующим строкам)
<input id="id[n0]" type="text" name="id[n0]" value="" />
<input id="name[n0]" type="text" name="name[n0]" value="" />
новая строка, созданная JS
<input id="id[n1]" type="text" name="id[n1]" value="" />
<input id="name[n1]" type="text" name="name[n1]" value="" />
Итак, чем мы продолжим форму, мы узнаем, какие строки нужно обновить и что добавить (если индекс начинается с «n» - новый, если индекс - номер - существующий элемент).
Я пробовал подчиненные формы ... но нужно ли создавать подчиненные формы для каждого поля? Если я использую следующий код:
$subForm = new Zend_Form_SubForm();
$subForm->addElement('Text', 'n0');
$this->addSubForm($subForm, 'pid');
$subForm = new Zend_Form_SubForm();
$subForm->addElement('Text', 'n0');
$this->addSubForm($subForm, 'name');
Каков наилучший способ для этого?
1) Использовать подчиненные формы?
2) Расширьте Zend / Form / Decorator / ViewHelper.php, чтобы использовать такие имена, как name[nX]
?
3) Другие решения?
Спасибо.