将策略添加到Zend \ Form \ Element \ Collection

时间:2013-05-08 20:09:04

标签: zend-framework2

有没有办法将水合作用策略添加到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

有关

1 个答案:

答案 0 :(得分:0)

实际上,它们可以只是添加到集合中的任何其他元素。就我而言,正确使用集合时出现了一些错误:

  • 未在视图脚本中调用$form->prepare()
  • 没有使用ClassMethods保湿器一段时间(由于调试),但我不知道为什么这应该是一个问题(但它可能是,但可能我错过了其他的东西)

我刚发现的另一个可能的问题是:

  • ClassMethods使用的方法(例如我的情况下为setItems)不可调用,ZF也不会调用水化器策略