2011-12-18 133 views
3

我试图覆盖FOSUserBundle窗体“编辑配置文件”;我创建了类EditFormTypeAP/UserBundle/Form/Type下为:FOSUserBundle:覆盖表格

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

然后,我已经建立了我的服务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 } 

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

fos_user: 
    profile: 
     form: 
     type: ap_edit_profile 

我终于有这个错误:Could not load type "ap_edit_profile"

什么可能是错误的?

谢谢!

+0

尝试请求的类型($此 - > container-> get('ap_edit_profile'));看看会出现什么错误。 – Inoryy 2011-12-19 08:52:09

回答

6

我在这部分配置假设问题

fos_user: 
    profile: 
     form: 
     type: ap_edit_profile 

它应该看起来像

fos_user: 
    profile: 
     form: 
      type: ap_edit_profile 
0

第一次尝试了我的意见,这可能会失败,并像could not find bla bla写,然后替换此行:

命名空间FOS \ UserBundle \表格\型号;

与此:

命名空间AP/UserBundle /表/类型;

另外,还要确保你的包扩展FOS之一:

public function getParent() 
{ 
    return 'FOSUserBundle'; 
} 

在主* Bundle.php文件

0

我想你也需要重写buildUserForm()函数而不是buildForm()。 然后您可以将所有你想要的物品直接创建一个虚拟控制器和请求的var_dump添加到表单生成器(不要忘了事先打电话parent::buildUserForm($builder, $options)(从另一个question)。