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

Posted

技术标签:

【中文标题】Symfony FOS 用户包 - 删除表单和视图中的用户名【英文标题】:Symfony FOS User Bundle - Remove Username in Form and View 【发布时间】:2016-01-12 17:14:41 【问题描述】:

使用此链接

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

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

Form Type 类工作正常。

但是在渲染时,它会抛出

第 3 行的 FOSUserBundle:Registration:register_content.html.twig 中不存在对象“Symfony\Component\Form\FormView”的方法“用户名”

我尝试使用此链接来避免这种情况

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';

树枝文件:

<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>

【问题讨论】:

@Matteo,请协助我。这将非常有帮助 能否请您添加您的模板代码和表单类型代码 嗨@NandaKumar,如果您提供使用的树枝文件和FormType文件的代码,这确实是最好的解决方案。那么就可以帮到你了。 【参考方案1】:

感谢@jahller 和@D3myon cmets。它帮助我诊断问题。

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

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

问题解决了。

【讨论】:

听起来不错。但请记住,在特殊情况下,您必须删除表单的一部分。然后你可以在构建表单后直接调用控制器内部的remove() - 函数。

以上是关于Symfony FOS 用户包 - 删除表单和视图中的用户名的主要内容,如果未能解决你的问题,请参考以下文章

Symfony,FOS 用户:使用空输入密码编辑用户

Symfony2 - 安装了 FOS 用户包的自定义身份验证提供程序

Symfony 2 FOS 用户捆绑引导模式 AJAX 登录

使用 FOS 用户包编辑用户配置文件

使用 FOS 用户 Symfony 4 登录后重定向问题

Symfony 4.4 FOS user-bundle api/auth/login 在 null 上调用成员函数 findOneBy()