ZF2 заполнить элемент коллекции форм дочерними объектами
Основываясь на руководстве по Zend Framework 2 ( здесь), я сделал такую форму:
class ParentForm extends Form
{
public function init()
{
$this->setName('parent_form')
->setAttribute('method', 'post')
->setHydrator(new ClassMethods(true))
->setInputFilter(new InputFilter());
$this->add(array(
'type' => 'Application\Form\Fieldset\Parent',
'name' => 'parent',
'options' => array(
'label' => 'Parent',
'use_as_base_fieldset' => true
)
));
$this->add(array(
'type' => 'Zend\Form\Element\Csrf',
'name' => 'csrf'
));
$this->add(array(
'name' => 'submit',
'attributes' => array(
'type' => 'submit',
'value' => 'Send'
)
));
}
}
И "родительский" набор полей:
class ParentFieldset extends Fieldset
{
protected $count = 2;
public function init()
{
$this->setName('parent_fieldset')
->setHydrator(new ClassMethodsHydrator(false))
->setObject(new Model\Parent());
$this->add(array('type' => 'Element\MyField'));
$this->add(array(
'type' => 'collection',
'name' => 'children',
'options' => array(
'label' => 'Children',
'count' => $this->count,
'should_create_template' => true,
'allow_add' => true,
'target_element' => array(
'type' => 'Application\Form\Fieldset\Child',
'name' => 'child',
'options' => array(
'label' => child',
),
),
)
));
}
public function setCount($count)
{
$this->count = max($count, 2);
}
}
Это прекрасно работает для увлажнения моего родительского объекта с данными, полученными из моей формы. Var_dump полученного объекта будет выглядеть так:
object(Parent)
public myField => foo
public children =>
array =>
0 => object(Child)
public field1 => value1
public field2 => value2
....
1 => object(Child)
.....
2 => object(Child)
.....
Но я не могу понять, как заполнить эту многомерную форму вышеуказанным объектом, если он гидратирован из базы данных (для целей редактирования). Как я могу это сделать?
Примечание: для свойства count в форме задано то же количество дочерних элементов, что и для объекта.