2012-03-29 80 views
0

我使用FOS用户捆绑,我想重写验证文件FOS/UserBundle /资源/配置/ validaiton.xml:Symfony2的覆盖模型验证

<constraint name="FOS\UserBundle\Validator\Unique"> 
    <option name="property">usernameCanonical</option> 
    <option name="message">fos_user.username.already_used</option> 
    <option name="groups"> 
     <!-- <value>Registration</value> --> 
     <value>Profile</value> 
    </option> 
</constraint> 

用户名不是我的报名表(我只是将它设置为隐藏),这就是验证不应产生任何错误......

也许有更好的方法来去除表格的用户名...

回答

2

要删除以适当的方式形式的用户名字段,你应该重写RegistrationFormType,创建自己的,并从原来的FOSUserBundle现在

<?php 
namespace Acme\UserBundle\Form\Type; 
use Symfony\Component\Form\FormBuilder; 
use FOS\UserBundle\Form\Type\RegistrationFormType as BaseType; 

class RegistrationFormType extends BaseType 
{ 
    public function buildForm(FormBuilder $builder, array $options) 
    { 
     $builder->add('email', 'email') 
       ->add('plainPassword', 'repeated', array('type' => 'password')) 

       // your other custom fields, if any. 

    } 
} 

扩展它,你应该将被覆盖的表单声明为服务,然后告诉FOSUserBundle配置文件您现在使用的是一个被覆盖的表单。 Here is the complete documentation

+0

sry,这是行不通的。它仍然要求输入用户名。所以我认为验证仍然活跃。 – tester 2013-07-19 15:46:07

1

呦你可以把实体验证信息放在任何validation.yml文件中。所以,你可以做

#validation.yml 
FQCN\Of\User\Entity: 
    constraints: 
    - FOS\UserBundle\Validator\Unique: 
     property: usernameCanonical 
     groups: [Profile] 
     message: fos_user.username.already_used 


    properties: 
    # property validations here