2014-10-29 128 views
0

我试图覆盖FOSUserBundle默认注册表单。确切地说,我试图删除用户名。这个问题可能在services.yml中。但不确定。 services.yml文件:Symfony FOSUserBundle覆盖表格

services: 
    user.registration.form.type: 
     class: Atotrukis\MainBundle\Form\Type\RegistrationFormType 
     tags: 
      - { name: form.type, alias: user_registration } 

security.yml

security: 
    encoders: 
     FOS\UserBundle\Model\UserInterface: sha512 

    role_hierarchy: 
     ROLE_ADMIN:  ROLE_USER 
     ROLE_SUPER_ADMIN: ROLE_ADMIN 

    providers: 
     fos_userbundle: 
      id: fos_user.user_provider.username_email 

    firewalls: 
     main: 
      pattern: ^/ 
      form_login: 
       provider: fos_userbundle 
       csrf_provider: form.csrf_provider 
      logout:  true 
      anonymous: true 

    access_control: 
     - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY } 
     - { path: ^/admin/, role: ROLE_ADMIN } 

RegistrationFormType.php

<?php 

namespace Atotrukis\MainBundle\Form\Type; 

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

class RegistrationFormType extends BaseType 
{ 

    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 

     parent::buildForm($builder, $options); 
     $builder->remove('username'); 
    } 

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

} 

?> 
+0

[这个线程可能给你一些更多的帮助]定义类(https://github.com/FriendsOfSymfony/FOSUserBundle/issues/555)。你使用1.3版还是2+版? [这也是一个精简的文档](https://github.com/FriendsOfSymfony/FOSUserBundle/blob/1.3.x/Resources/doc/logging_by_username_or_email.md),尽管它可能不会给你想要的东西 – sjagr 2014-10-29 13:05:50

+0

我是使用Symfony 2.5.3和FOSUSerBundle 2.0 – Einius 2014-10-29 16:30:58

回答

0

有2个问题,你的代码。

表格的继承不是用类扩展完成的,而是用getParent()方法的定义。您定义服务的名称。例如。

class RegistrationFormType extends AbstractType 
{ 
    public function getParent() 
    { 
     return 'fos_user_registration'; 
    } 
} 

你忘了在束配置

# app/config/config.yml 
fos_user: 
    registration: 
     form: 
      type: user.registration.form.type