向Zend_Form添加动态数量的子表单

时间:2016-03-17 10:53:07

标签: php zend-framework

我使用JS创建表单 - 它的结构为:

$('.dropme').sortable({
    connectWith: '.dropme',
    cursor: 'pointer',
    stop: function(event, ui) {
        var $li = $('<div>').html('List ' + ui.item.html());
        $li.appendTo(this);
        alert('dropped');
    }
});

我想验证<form> [other input fields here] // these rows added via JS <ul> <li> <input name="field[0][id]"> <input name="field[0][data]"> </li> <li> <input name="field[1][id]"> <input name="field[1][data]"> </li> ... </form> 字段。因此,对于我的表单,我已经构建了一个子表单id,我将其添加到我的表单中,并且......我在field内难倒了我不知道会有多少行。

有没有办法添加不确定数量的子表单(类似于将init()声明为多值,如果有意义的话),或者,我是否必须将子表单的创建移动到multiselect[]

我已将功能移至isValid(),结果令人惊讶。我的代码:

isValid()

POST:

foreach($values['field'] as $index => $values)
{
    $index_form = new Zend_Form_SubForm();

    $values_form = new Zend_Form_SubForm();

    $data = new Zend_Form_Element_Text('data');

    $values_form->addElement($data);

    $index_form->addSubForm($values_form, $index);
    $this->addSubForm($index_form, "field");
}

的GetValues():

array (size=5)
  -5 => 
    array (size=1)
      'data' => string '13' (length=2)
  -4 => 
    array (size=1)
      'data' => string '10' (length=2)
  -3 => 
    array (size=1)
      'data' => string '11' (length=2)
  -2 => 
    array (size=1)
      'data' => string '12' (length=2)
  -1 => 
    array (size=1)
      'data' => string '15' (length=2)

虽然我理解为什么字段名称被重命名(我可以使用它)但我不明白为什么最后只有一个值(即使每个子表单都有不同的名称)。< / p>

0 个答案:

没有答案