Symfony2 Doctrine ODM 嵌入类表单验证

Posted

技术标签:

【中文标题】Symfony2 Doctrine ODM 嵌入类表单验证【英文标题】:Symfony2 Doctrine ODM embeded class form validation 【发布时间】:2012-05-20 05:30:22 【问题描述】:

我有一个 Doctrine mongodb 文档,我已经把它变成了一个表单。该文档有两个 emebedOne 文档,它们也在表单中。正在验证主文档,但未验证嵌入文档。我正在使用自定义断言,但我认为这并不重要。

文档

类帐户记录 /** * @MongoDB\ID */ 私人 $id; /** * @MongoDB\Field(type="BimcoreEmail") * @Assert\电子邮件 * @Assert\NotNull * @CustomAssert\BimcoreEmail */ 私人$电子邮件; /** * 访问管理员 * * @MongoDB\布尔 */ 私人 $access_admin = 0; /** @MongoDB\EmbedOne(targetDocument="vidAccountSettings") */ 私人 $vid;

永远不会调用对此自定义断言的嵌入类。

/** @MongoDB\EmbeddedDocument */ 类 vidAccountSettings /** * 分享部分路径 * * * @MongoDB\Field(type="Url") * @CustomAssert\Url */ 私人 $sharePath;

表格

类 AccountEditFormType 扩展 AbstractType /** * 构建代表用户的嵌入表单。 * * @param FormBuilder $builder * @param 数组 $options */ 公共函数 buildForm(FormBuilder $builder, array $options) $建造者 ->添加('前缀','隐藏',数组('必需' => false)) ->add('vid.access', 'checkbox', array('required' => false)) ->add('vid.googleAnalytics', 'text', 数组('required' => false)) ->add('vid.liveRail', 'text', 数组('required' => false)) ->add('vid.sharePath', 'url', 数组('required' => false)) ; 公共函数 getDefaultOptions(数组 $options) 返回数组( '意图' => 'editAccount', 'cascade_validation' => 真, ); 公共函数 getName() 返回“bimfs_account_creation”;

处理程序

类 AccountEditFormHandler 受保护的$请求; 受保护的 $userManager; 受保护的$form; 公共函数 __construct(Form $form, Request $request, BimcoreAccountManager $accountManager) $this->form = $form; $this->request = $request; $this->accountManager = $accountManager; 公共功能流程($account) // 为当前账户设置表单中的数据。 $this->form->setData($account); if ('POST' === $this->request->getMethod()) $this->form->bindRequest($this->request); if ($this->form->isValid()) $this->onSuccess($account); 返回真; 别的 返回假; 受保护的功能 onSuccess(BimcoreAccountRecord $account) // 更新账户数据。 $this->accountManager->updateAccount($account);

感谢您的帮助。

科里

【问题讨论】:

【参考方案1】:

好的,我想通了,您需要在要验证的嵌入的记录中设置一个断言有效语句。

/** @MongoDB\EmbedOne(targetDocument="vidAccountSettings") * @Assert\有效 */ 私人 $vid;

【讨论】:

以上是关于Symfony2 Doctrine ODM 嵌入类表单验证的主要内容,如果未能解决你的问题,请参考以下文章

Doctrine ODM 嵌入文档父参考

Doctrine ODM with MongoDB 需要两个参考映射集

Doctrine MongoDB 在没有 ODM 的情况下使用

Doctrine MongoDB 在没有 ODM 的情况下使用

如何将嵌入的 Doctrine 文档填充到 Zend 字段集中?

Zend Framework 2 + Doctrine ODM,“在链配置的命名空间中找不到类”错误?