如何覆盖FOSUserBundle ProfileFormType? - Symfony 3.1

时间:2016-06-02 08:55:49

标签: php fosuserbundle symfony-forms symfony

我已经搜索了很多其他选项,而且我看过很多类似的堆栈溢出问题,但它们都处理过时版本的Symfony或FOSUserBundle ......它没有&#39 ; t帮助FOSUserBundle文档没有完全涵盖如何将自定义字段添加到“配置文件”页面,只包括注册页面。

那么如何将我添加到用户类中的自定义字段显示在用户的个人资料页面中?我几乎尝试过所有其他堆栈溢出尝试。

这是我的services.yml:

services: app.profile.form.type: class: AppBundle\Form\ProfileFormType tags: - { name: form.type, alias: app_user_profile }

这是我的config.yml:

fos_user: profile: form: type: AppBundle\Form\ProfileFormType

我的许多Profile类只进行了一次迭代: <?php namespace AppBundle\Form\Type; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\FormBuilderInterface; class ProfileFormType extends AbstractType { public function buildUserForm(FormBuilderInterface $builder, array $options) { $builder->add('pokemon'); }

public function getParent() 
{
    return 'FOS\UserBundle\Form\Type\ProfileFormType';
}

public function getBlockPrefix()
{
    return 'app_user_profile';
}

// For Symfony 2.x
public function getName()
{
    return $this->getBlockPrefix();
}

}`

3 个答案:

答案 0 :(得分:0)

也许你应该扩展父表单类?

ProfileFormType extends \ FOS \ UserBundle \ Form \ Type \ ProfileFormType { .... }

有一个参数类(用户实体)通过构造函数

传递

答案 1 :(得分:0)

在您的配置文件类中,命名空间为:namespace AppBundle \ Form \ Type 这意味着你应该提供服务:

&#13;
&#13;
services:
    app.profile.form.type:
        class: AppBundle\Form\Type\ProfileFormType
        tags:
            - { name: form.type, alias: app_user_profile }
&#13;
&#13;
&#13;

并确保您创建文件夹类型

答案 2 :(得分:0)

Dunno,如果您仍然有这个问题,但可能只是buildUserForm

使用buildForm将方法名称更改为getParent(),您将在$builder方法中得到一个buildForm(),其中已经填充了默认的FosUser字段。