ZF2+Doctrine+DoctrineMongoODM モジュールを使用しています。ドキュメントにPerson
ドキュメントが埋め込まれていHouse
ます:
/**
* @ODM\Document
*/
class Custelement{
/** @ODM\EmbedOne(targetDocument="Person") */
protected $person;
そう
#Document is binded to form
$form->bind($document);.
#Common hydrator is used
$form->setHydrator(new \DoctrineModule\Stdlib\Hydrator\DoctrineObject($docManager));
ドキュメントの共通フィールドHouse
が保存され、データが取り込まれます。埋め込まれたドキュメント フィールドを編集するために name を含む fieldset を使用するperson
ため、 と を含む入力要素のセットがありname=person[firstName]
ますname=person[lastName]
。
埋め込みドキュメントのフィールドは保存されますが、フォームには入力されません。
回避策を見つけました-$vals = (array) $element->getValue();
フィールドセットオブジェクトで値を取得してから
$name = preg_replace("/^(.*)\[(.*)\]$/", "\\2", $elem->getName());
$elem->setValue($vals[$name]);
各フィールドセット要素に対して。
より良い解決策はありますか?