FOSUserBundle - 覆盖表单:无法加载类型“user_registration”

时间:2013-04-25 14:08:53

标签: php symfony

我在Me\MyBundle\Form\Type\UserFormRegistrationType创建了自己的表单类型:

namespace Me\MyBundle\Form\Type;

use FOS\UserBundle\Form\Type\RegistrationFormType as BaseType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;

class UserFormRegistrationType extends BaseType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        parent::buildForm($builder, $options);

        // all my unique fields
    }

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

    public function setDefaultOptions(OptionsResolverInterface $resolver)
    {
        $resolver->setDefaults(array('data_class' => 'Me\MyBundle\Entity\User'));
    }
}

我在services.yml中有以下内容:

services:
    me_my.registration.form.type:
        class: Me\MyBundle\Form\Type\UserFormRegistrationType
        arguments: [%fos_user.model.user.class%]
        tags:
            - { name: form.type, alias: user_registration }

以下内容添加到我的config.yml:

# other config stuff

fos_user:
    # database stuff, general config

    registration:
        form:
            type: user_registration

然而,当我尝试访问我的注册表/页面时,我得到:

  

无法加载“user_registration”类型

对我明显遗漏的任何暗示?这不是防火墙问题。我有一个,但调整我的security.yml修复它。这是一个纯粹的未找到的错误。非常烦人,因为我相信我跟着文件到了那封信。

3 个答案:

答案 0 :(得分:1)

您不应再使用别名

在您的配置文件中:

之前: registration: form: type: user_registration

新: registration: form: type: 'CoreBundle\Form\Type\RegistrationFormType'

在您的src / CoreBundle / Form / Type / RegistrationFormType.php中:getParent()函数应为:

public function getParent()
{
    return "FOS\UserBundle\Form\Type\RegistrationFormType";
}

别忘了在文件顶部使用: use FOS\UserBundle\Form\Type\RegistrationFormType;

您好,这里是解释: https://stackoverflow.com/a/53048060/7888453

官方: https://github.com/symfony/symfony/blob/3.4/UPGRADE-3.0.md#form

答案 1 :(得分:0)

看看这个家伙的问题,然后看看他提出的解决方案。我离开了他的代码并对其进行了修改以匹配我文件中的名称并且它有效!

How to override register form FosUserBundle?

答案 2 :(得分:-1)

文档拒绝提及/提醒该服务需要在config.yml中注册。