2

有没有办法为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

4

1 回答 1

0

实际上,它们可以像任何其他元素一样添加到集合中。就我而言,正确使用集合有几个错误:

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

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

  • ClassMethods(例如setItems在我的情况下)使用的方法不可调用,那么 ZF 也不会调用 hydrator 策略
于 2013-05-11T11:18:27.873 回答