Symfony FOS用户包 - 删除表单和视图中的用户名

时间:2015-10-14 14:36:17

标签: symfony

使用此链接

Remove / Replace the username field with email using FOSUserBundle in Symfony2 / Symfony3

我尝试通过覆盖FOS用户捆绑包从注册表单中删除用户名。

Form Type类工作正常。

但是在渲染时,它会抛出

方法"用户名" for object" Symfony \ Component \ Form \ FormView"在FOSUserBundle中不存在:注册:第3行的register_content.html.twig

我试过这个链接以避免这个

Method "email" for object "Symfony\Component\Form\FormView" does not exist in SqliGestionCongeBundle:Default:add.html.twig

我无法做到。 需要专家协助。

更新1:

我也试过这个链接

http://symfony.com/doc/current/bundles/FOSUserBundle/overriding_forms.html

表单类型:

/ *  *重写了FOSUserBundle RegistrationFormType。  * /

命名空间Test \ RegistrationBundle \ Form;

使用Symfony \ Component \ Form \ AbstractType;

使用Symfony \ Component \ Form \ FormBuilderInterface;

类RegistrationFormType扩展AbstractType

{

public function buildForm(FormBuilderInterface $builder, array $options)
{
     $builder->remove('username',array("mapped"=>false));
}

public function getParent()
{
    return 'fos_user_registration';
}

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

}

Twig文件:

<form action="{{ path('fos_user_registration_register') }}" {{ form_enctype(form) }} method="POST" class="fos_user_registration_register">
{{ form_widget(form) }}
<div>
    <input type="submit" value="{{ 'registration.submit'|trans({}, 'FOSUserBundle') }}" />
</div>

1 个答案:

答案 0 :(得分:0)

感谢@jahller和@ D3myon的评论。它帮助我诊断问题。

我通过将模板表单包含为单个元素而不是form_widget(表单)来覆盖模板表单。

我删除了模板文件中的用户名。

解决了问题。