【问题标题】:Symfony form validate selected members of entitySymfony 表单验证实体的选定成员
【发布时间】:2013-05-02 22:51:06
【问题描述】:

我正在使用 symfony 表单来验证登录数据,因此我将它绑定到实体类(为所有成员定义了验证),并且我需要该表单来仅验证电子邮件和密码部分。所以在表单类中,我没有将电子邮件和密码添加到表单中。但是,当提交数据时,它仍然会验证它们并在表单顶部显示错误

如何在不更改实体类的情况下不验证其他成员(城市、性别等)。

所以我的实体类有:姓名、电子邮件、性别、密码、城市。必填字段

带有电子邮件和密码的登录表单。 我仍然收到其他两个错误

【问题讨论】:

    标签: php symfony symfony-2.2


    【解决方案1】:

    使用验证组 ...

    实体类:

    // src/Acme/BlogBundle/Entity/User.php
    namespace Acme\BlogBundle\Entity;
    
    use Symfony\Component\Security\Core\User\UserInterface;
    use Symfony\Component\Validator\Constraints as Assert;
    
    class User implements UserInterface
    {
        /**
        * @Assert\Email(groups={"registration"})
        */
        private $email;
    
        /**
        * @Assert\NotBlank(groups={"registration"})
        * @Assert\Length(min=7, groups={"registration"})
        */
        private $password;
    
        /**
        * @Assert\Length(min = "2")
        */
        private $city;
    }
    

    然后当您创建表单时:

    $form = $this->createFormBuilder($users, array(
        'validation_groups' => array('registration'),
    ))->add(...);
    

    这只会验证emailpassword 字段。

    关于验证组的文档是 herehere

    【讨论】:

    • 这行得通,尽管我使用了不同的方法。我手动添加了验证器(如 Zend_Form)并得到了一个数组而不是一个实体,并用它来检查凭据。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-24
    • 1970-01-01
    • 1970-01-01
    • 2018-12-07
    • 1970-01-01
    • 2015-05-16
    相关资源
    最近更新 更多