Zend framework2 向Zend\Form\Element\Collection添加策略

Zend framework2 向Zend\Form\Element\Collection添加策略,zend-framework2,Zend Framework2,有没有办法向Zend\Form\Element\Collection元素添加水合策略?我用正常的方式试过: $hydrator = new ClassMethods(); $hydrator->addStrategy('language', new LanguageStrategy($em)); $hydrator->addStrategy('items', new UnitItemsStrategy($em)); $this->setHydrator($hydrator);

有没有办法向
Zend\Form\Element\Collection
元素添加水合策略?我用正常的方式试过:

$hydrator = new ClassMethods();
$hydrator->addStrategy('language', new LanguageStrategy($em));
$hydrator->addStrategy('items', new UnitItemsStrategy($em));
$this->setHydrator($hydrator);
对于元素:

$this->add(array(
    'type' => 'Zend\Form\Element\Collection',
    'name' => 'items',
    'options' => array(
        'label' => 'Items',
        'count' => 1,
        'should_create_template' => true,
        'allow_add' => true,
        'target_element' => array(
            'type' => 'Application\Form\UnitItemFieldset',
        ),
    ),
));

但是水合器策略永远不会被调用。当我将它重新映射到另一个元素,如
text
时,它会被调用。因此,它似乎与元素是
Zend\Form\element\Collection

有关。实际上,它们可以像添加到任何其他元素一样添加到集合中。在我的例子中,在正确使用集合时出现了几个错误:

  • 未在视图脚本中调用
    $form->prepare()
  • 有一段时间没有使用
    ClassMethods
    或(由于调试),但我不知道为什么这会是一个问题(虽然是这样,但可能我遗漏了其他东西)
我刚刚发现另一个可能的问题:

  • ClassMethods
    使用的方法(例如,在我的情况下,
    setItems
    )不可调用,那么ZF也不会调用该方法或策略