Php 验证fosuser字段用户名
我想验证用户名字段,这是一个fosuser字段,但根据我自己的验证规则 下面是我的代码片段: FormType-UserType.phpPhp 验证fosuser字段用户名,php,validation,symfony,fosuserbundle,Php,Validation,Symfony,Fosuserbundle,我想验证用户名字段,这是一个fosuser字段,但根据我自己的验证规则 下面是我的代码片段: FormType-UserType.php public function buildForm(FormBuilderInterface $builder, array $options) { $builder ->add('username') ... } 实体-User.php class User extends BaseUser { //
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->isValidis true,即使我在表单中输入了一个已经存在的用户名。请帮忙,因为到目前为止我还没有找到解决办法。我尝试将orm.xml文件复制到validation文件夹下的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中使用@uniquentityusername,则会自动在表单中抛出一个错误,表示它已被使用
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
/**
* User
*
* @ORM\Table(name="users")
* @ORM\Entity()
* @UniqueEntity("username")
*
*/
这对我很管用。但是,我不使用FosUserBundle,但原则应该是相同的
此外,我还找到了可以帮助您的方法,或者可能是那些正在使用FosUserBundle的方法。您确实尝试过清除缓存,对吗?validation.yml文件放在哪里?如果它是FOSUserBundle的子包,则可能根本不会加载它,因为FOS使用xml。