FOSUserBundle:覆盖表单

Jér*_*eil 3 symfony

我试图覆盖FOSUserBundle表单"编辑个人资料"; 我创建了类EditFormTypeAP/UserBundle/Form/Type为:

<?php
namespace FOS\UserBundle\Form\Type;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilder;
use FOS\UserBundle\Form\Type\ProfileFormType as BaseType;

class EditFormType extends BaseType
{


    public function buildForm(FormBuilder $builder, array $options)
    {
        $child = $builder->create('user', 'form', array('data_class' => $this->class));
        $this->buildUserForm($child, $options);

        $builder
            ->add($child)
            ->add('Mot de passe', 'password')
            ->add('Nom', 'nom')
            ->add('Prénom', 'prenom')
            ->add('Civilité', 'civilite')
            ->add('Newsletter', 'new_letter')
        ;
    }

    public function getDefaultOptions(array $options)
    {
        return array('data_class' => 'FOS\UserBundle\Form\Model\CheckPassword');
    }

    public function getName()
    {
        return 'ap_edit_profile';
    }
}
Run Code Online (Sandbox Code Playgroud)

然后,我创建了我的服务AP/UserBundle/Resources/config/services.yml:

services:
    ap_user.edit.form.type:
        class: AP\UserBundle\Form\Type\EditFormType
        arguments: [%fos_user.model.user.class%]
        tags:
            - { name: form.type, alias: ap_edit_profile }
Run Code Online (Sandbox Code Playgroud)

最后,我更新了app/config/config.yml:

fos_user:
    profile:
        form:
        type: ap_edit_profile
Run Code Online (Sandbox Code Playgroud)

我终于得到了这个错误: Could not load type "ap_edit_profile"

有什么不对?

谢谢 !

小智 6

我想在这部分配置中存在问题

fos_user:
    profile:
        form:
        type: ap_edit_profile
Run Code Online (Sandbox Code Playgroud)

它应该看起来像

fos_user:
    profile:
        form:
            type: ap_edit_profile
Run Code Online (Sandbox Code Playgroud)