2011-12-18 130 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)。