2013-10-04 217 views
1

我的ExampleUserBundle延伸FOSUserBundle。我重写RegistrationFormType这样的:如何覆盖FOSUserBundle的验证规则

<?php 
// Example/UserBundle/Form/Type/RegistrationFormType.php 

namespace Example\UserBundle\Form\Type; 

use Symfony\Component\Form\FormBuilderInterface; 
use FOS\UserBundle\Form\Type\RegistrationFormType as BaseType; 

class RegistrationFormType extends BaseType 
{ 

    public function buildForm(FormBuilderInterface $builder, array $options) { 
     parent::buildForm($builder, $options); 
     $builder->remove('username'); 
    } 

    public function getName() { 
     return 'example_user_registration'; 
    } 

} 

服务的声明:

// Example/UserBundle/Ressources/Config/services.yml 
services: 
    example_user.registration.form.type: 
     class: Example\UserBundle\Form\Type\RegistrationFormType 
     arguments: [%fos_user.model.user.class%] 
     tags: 
      - { name: form.type, alias: example_user_registration } 

,并在/app/config/config.yml:

fos_user: 
    db_driver: orm 
    firewall_name: main 
    user_class: Example\UserBundle\Entity\User 
    registration: 
     form: 
      type: example_user_registration 

当我创建一个新的User与此表格,FOSUserBundle的基本验证规则不会覆盖。 (电子邮件 - >唯一;密码 - >超过3个字符; ...)。

回答