search

Home  >  Q&A  >  body text

php - symfony 注册页面判断用户名唯一

求助:我想在注册的时候,加个判断,用户名唯一,这个怎么做?

PHP中文网PHP中文网2817 days ago394

reply all(3)I'll reply

  • 黄舟

    黄舟2017-04-10 16:45:48

    不清楚你是否想用Ajax,如果单纯从Symfony这一端来进行验证或者约束,需要在定义Entity的时候在用户名处(假设用户名是username)作如下约束(@ORM\Column加unique=true约束,同时Entity头部加@UniqueEntity(fields="username")约束),提交后,Symfony会自动验证username是否唯一,如果验证失败则提示错误信息(message):

    use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
    
    /**
     *@ORM\Entity
     *@UniqueEntity(fields="username", message="用户名已存在")
     */
    class User
    {
        /**
         *@ORM\Column(type="string", length=255, unique=true)
         *@ORM\NotBlank()
         */
         protected $username;
    
        //...
    }
    

    备注:

    1. @ORM\Column(unique=true)会反映到具体的SQL语句上(UNIQUE KEY),是数据库层面的约束

    2. @UniqueEntity则属于Symfony验证(Validator)的一部分,是Symfony业务逻辑层面的约束(验证)

    reply
    0
  • 怪我咯

    怪我咯2017-04-10 16:45:48

    调用数据库判断呀

    reply
    0
  • 阿神

    阿神2017-04-10 16:45:48

    监听用户名表单输入的事件,keyUp或者是blur,事件触发时使用Ajax将用户名提交到服务器做判断,将判断结果返回,前端再做相应的处理。

    reply
    0
  • Cancelreply