簡體   English   中英

驗證fosuser字段用戶名

[英]Validation of fosuser field username

我想驗證用戶名字段,該字段是fosuser字段,但要遵循我自己的驗證規則。

以下是我的代碼段:

FormType-UserType.php

public function buildForm(FormBuilderInterface $builder, array $options)
{    
    $builder
        ->add('username')
     ...
}

實體-User.php

class User extends BaseUser
{
    //no mention of any of the fosuser properties here
 ...
}

驗證:validation.yml

Project\MyBundle\Entity\User:
constraints:
    - Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity:
        fields: username
        errorPath: username
        message: 'This username is already in use.'
properties:
    dob:
        - NotBlank: ~
        - Type: \DateTime

控制器:UserController.php

public function createAction(Request $request, $brandId)
{
    $entity = new User();
    $form = $this->createCreateForm($entity, $brandId);
    $form->handleRequest($request);

    if ($form->isValid()) {
        ...
    }
}

驗證總是失敗,即。 $ form-> isValid()為true,即使我在表單中輸入了已經存在的用戶名也是如此。 請提供幫助,因為到目前為止我還沒有找到解決方案。 我嘗試將orm.xml文件復制到驗證文件夾下的myBundle。 但這仍然無效。 任何幫助將不勝感激。

當保存發生時,我也會得到重復的插入錯誤。

An exception occurred while executing 'UPDATE user SET username = ?, username_canonical = ? WHERE id = ?' with params ["sub5", "sub5", 27]:

SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'sub5' for key 'UNIQ_7BB0CD5292FC23A8' 

您是否嘗試過在User.php中使用@UniqueEntity("username") ,這會自動以表格形式拋出錯誤,表明它已被使用。

use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
/**
 * User
 *
 * @ORM\Table(name="users")
 * @ORM\Entity()
 * @UniqueEntity("username")
 *
 */

那對我有用。 但是,我不使用FosUserBundle,但原理應相同。

另外,我發現它可以幫助您也許這個 ,那些正在使用FosUserBundle。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM