有没有办法将水合作用策略添加到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
。
答案 0 :(得分:0)
实际上,它们可以只是添加到集合中的任何其他元素。就我而言,正确使用集合时出现了一些错误:
$form->prepare()
ClassMethods
保湿器一段时间(由于调试),但我不知道为什么这应该是一个问题(但它可能是,但可能我错过了其他的东西)我刚发现的另一个可能的问题是:
ClassMethods
使用的方法(例如我的情况下为setItems
)不可调用,ZF也不会调用水化器策略