我使用 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
被保存和填充得很好。我使用带名称的 fieldsetperson
来编辑嵌入的文档字段,因此有一组带有name=person[firstName]
和的输入元素name=person[lastName]
。
嵌入文档的字段已保存但未填充到表单中。
我找到了一种解决方法 - 只需通过字段$vals = (array) $element->getValue();
集对象获取值,然后
$name = preg_replace("/^(.*)\[(.*)\]$/", "\\2", $elem->getName());
$elem->setValue($vals[$name]);
对于每个字段集元素。
有更好的解决方案吗?