Symfony UniqueEntity异常

 半夏✔ 发布于 2023-02-05 12:46

好的,我知道这已被问了一百万次,但是这里有.

我已经读过这个,这个,这个以及文档,但仍然无法弄清楚我的问题是什么.每当我尝试添加具有重复用户名/电子邮件的用户时,我都会收到异常,而不是预期的表单验证错误.我有一个SystemUser实体,通过连接继承映射链接到各种其他用户类型.在SystemUser类中,我有这个......

/**
 * SystemUser
 *
 * @ORM\Table(name="systemuser")
 * @ORM\Entity(repositoryClass="MyBundle\MainBundle\Entity\Repository\SystemUserRepository")
 * @ORM\InheritanceType("JOINED")
 * @ORM\DiscriminatorColumn(name="discr", type="integer")
 * @ORM\DiscriminatorMap({"0" = "SystemUser", "1" = "SchoolAdmin", "2" = "Teacher", "3" = "Student", "4" = "Guardian", "5" = "SystemAdmin"})
 * @ORM\HasLifecycleCallbacks()
 * @UniqueEntity(fields={"email"}, message="This email address is already used in the system", groups={"registration"})
 * @UniqueEntity(fields={"username"}, message="This cellphone number is already used in the system", groups={"registration"})
 */

在字段本身(电子邮件,用户名)我也有unique=true.我试过没有它,同样的例外.我也试过没有groups={"registration"}旗帜,我不确定是否必须指定'注册'组并在某处声明(我确实检查了文档,但找不到任何东西).事实上,我不知道验证组在这个例子中实际上有什么好处,但我还是试过了.

失败了,我转向尝试validation.yml ...

MyBundle\MainBundle\Entity\SystemUser:
    constraints:
        - Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity: email
        - Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity: username
    properties:
        email:
            - Email: { groups: [registration] }
        password:
            - NotBlank: { groups: [registration] }
            - Length: { min: 7, groups: [registration] }
        cellphone:
            - NotBlank: { groups: [registration] }

显然,没有结果.如果失败了,我继续使用表单类的setDefaultOptions()方法.

public function setDefaultOptions(OptionsResolverInterface $resolver) {
        $resolver->setDefaults(array(
            'data_class' => 'MyBundle\MainBundle\Entity\SystemUser',
            'validation_groups' => array('registration'),
            'cascade_validation' => true,
            'constraints' => array(
                new UniqueEntity(array(
                    'fields' => array('email')
                )),
                new UniqueEntity(array(
                    'fields' => array('username')
                ))
            )
        ));
    }

而且,没有任何运气.目前我将所有这3个活跃在一起,但仍然没有.我分别尝试了所有这些,但又一次,没有运气.

如果有人能够指出这里发生了什么,我将非常感激.现在已经挣扎了大约6个小时.

谢谢!

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有