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呼び出されるように、別の要素に再マップするだけです。したがって、要素が a であることに関係しているようZend\Form\Element\Collectionです。

4

1 に答える 1

0

実際には、他の要素と同様にコレクションに追加できます。私の場合、コレクションを正しく使用する際にいくつかの間違いがありました。

  • $form->prepare()ビュースクリプトを呼び出しませんでした
  • しばらくハイドレーターを使用していませんでしClassMethodsたが (デバッグのため)、なぜこれが問題になるのかわかりません (まだ問題はありましたが、おそらく他に何か不足している可能性があります)。

私が見つけた別の考えられる問題:

  • ClassMethods(私の場合など) で使用されるメソッドsetItemsが呼び出し可能でない場合、ZF はハイドレーター戦略も呼び出しません。
于 2013-05-11T11:18:27.873 に答える