当前位置: 首页 > 知识库问答 >
问题:

Symfony2原则ODM嵌入类表单验证

云和同
2023-03-14

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

文档

    class AccountRecord{
    /**
     * @MongoDB\Id
     */
    private $id;

    /**
     * @MongoDB\Field(type="BimcoreEmail")
     * @Assert\Email
     * @Assert\NotNull
     * @CustomAssert\BimcoreEmail
     */
    private $email;

    /**
     * Access Admin
     * 
     * @MongoDB\Boolean
     */
    private $access_admin = 0;


    /** @MongoDB\EmbedOne(targetDocument="vidAccountSettings") */
    private $vid;
   }

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

/** @MongoDB\EmbeddedDocument */
class vidAccountSettings {
    /**
     * Share section path
     *
     * 
     * @MongoDB\Field(type="Url")
     * @CustomAssert\Url
     */
    private $sharePath;
}

形式

class AccountEditFormType extends AbstractType
{
    /**
     * Builds the embedded form representing the user.
     *
     * @param FormBuilder $builder
     * @param array       $options
     */
    public function buildForm(FormBuilder $builder, array $options){
        $builder
            ->add('prefix', 'hidden', array('required' => false))
            ->add('vid.access', 'checkbox', array('required' => false))
            ->add('vid.googleAnalytics', 'text', array('required' => false))
            ->add('vid.liveRail', 'text', array('required' => false))
            ->add('vid.sharePath', 'url', array('required' => false))
            ;
    }

    public function getDefaultOptions(array $options)
    {
        return array(
            'intention'  => 'editAccount',
            'cascade_validation' => true,
        );
    }

    public function getName()
    {
        return 'bimfs_account_creation';
    }



}

处理程序

class AccountEditFormHandler
{
    protected $request;
    protected $userManager;
    protected $form;

    public function __construct(Form $form, Request $request, BimcoreAccountManager $accountManager)
    {
        $this->form = $form;
        $this->request = $request;
        $this->accountManager = $accountManager;
    }

    public function process($account)
    {
        // set the data in the form for the current account.
        $this->form->setData($account);

        if ('POST' === $this->request->getMethod()) {

            $this->form->bindRequest($this->request);
            if ($this->form->isValid()) {
                $this->onSuccess($account);
                return true;
            } else {
            }
        }

        return false;
    }


    protected function onSuccess(BimcoreAccountRecord $account)
    {
        // update the account data.
        $this->accountManager->updateAccount($account);
    }
}

谢谢你的帮助。

科里

共有1个答案

蔡弘扬
2023-03-14

好的,我已经解决了这个问题,您需要在记录中为要验证的嵌入设置一个assert-valid语句。

/** @MongoDB\EmbedOne(targetDocument="vidAccountSettings") 
    * @Assert\Valid
    */
    private $vid;
 类似资料:
  • 只使用一个集合很好,但是我需要编辑外部窗体的原型,所以它为每一行呈现内部窗体的原型。 你知道我该怎么做吗?还有什么是最好的储蓄方式 编辑:现在我正在尝试呈现嵌套窗体的原型: 促销特征选择类型 第一级原型,工作很好。

  • 有没有人在使用doctrine Embeddebles和symfony表单时遇到过这个问题? 如果你不知道可嵌入原则是什么,你可以在这里阅读http://doctrine-orm.readthedocs.org/en/latest/tutorials/embeddables.html 在表单提交时(在持久化到DB的过程中)将value对象(在我的情况下是CategoryType)与symfony表

  • 如何覆盖symfony2中的表单验证消息。虽然有一个验证。与xml文件相关的模型类。我认为它验证了一个基于html5的表单。 “请匹配要求的格式”,“请填写此字段”。是否有任何方法覆盖此验证消息。 请在这方面帮助我,我被困了一天多,因为我对symfony是全新的

  • 问题内容: 如何使用in 将 属性设置为表单? 像这样: 我希望属性设置为 日历的 此字段 __ 问题答案: 您可以从树枝模板执行此操作:

  • 我正在尝试使用yml格式将列添加到现有表中。将新列条目添加到.yml文件中,并运行命令生成实体 通过运行该命令,得到一个错误 这是我的yml文件:

  • CodeIgniter 提供了一个全面的表单验证和数据预处理类可以帮你少写很多代码。 Page Contents 表单验证类 概述 表单验证指南 表单 成功页面 控制器 试一下! 解释 设置验证规则 使用数组来设置验证规则 级联规则(Cascading Rules) 预处理数据 重新填充表单 回调:你自己的验证函数 使用任何可调用的方法作为验证规则 设置错误信息 翻译表单域名称 更改错误定界符 单