使用此链接
Remove / Replace the username field with email using FOSUserBundle in Symfony2 / Symfony3
我试图通过覆盖FOS用户包从注册表中删除用户名 .
Form Type类工作正常 .
但是在渲染时,它会抛出
Method "username" for object "Symfony\Component\Form\FormView" does not exist in FOSUserBundle:Registration:register_content.html.twig at line 3
我尝试使用此链接来避免这种情况
我不能 . 需要专家协助 .
Update 1:
我也试过这个链接
http://symfony.com/doc/current/bundles/FOSUserBundle/overriding_forms.html
表单类型:
/ * *重写了FOSUserBundle RegistrationFormType . * /
namespace Test \ RegistrationBundle \ Form;
使用Symfony \ Component \ Form \ AbstractType;
使用Symfony \ Component \ Form \ FormBuilderInterface;
class 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';
}
}
树枝文件:
<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 回答
感谢@jahller和@ D3myon的评论 . 它帮助我诊断问题 .
我通过将模板表单包含为单独的元素而不是form_widget(表单)来覆盖模板表单 .
我删除了模板文件中的用户名 .
问题解决了 .