2013-05-08 33 views
2

有沒有辦法將水化策略添加到Zend\Form\Element\Collection元素中?我嘗試了正常的方式:將策略添加到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

實際上,它們可以被添加到集合中作爲任何其他元素。在我的情況也出現了幾次失誤在正常使用集合:

  • 沒有叫$form->prepare()在視圖腳本
  • 沒有使用ClassMethods水化了一段時間(由於調試),但我不知道爲什麼這應該是一個問題(但它是,但也許我缺少別的東西)

另一個可能的問題我才發現:

  • 您使用的方法ClassMethods(例如setItems)在我的情況下)不可調用,那麼ZF將不會調用水潤策略
相關問題