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 with MongoDB 需要两个参考映射集
Doctrine MongoDB 在没有 ODM 的情况下使用
Doctrine MongoDB 在没有 ODM 的情况下使用