2012-04-10 41 views
2

我使用Symfony 2和FOSUserBundle創建了一個應用程序。我有我自己的UserBundle配置正確。我的用戶實體具有很多不同類別的屬性(例如位置設置,個人設置...),所以我想爲每個類別製作不同的表單,以便我可以在不同的頁面上顯示每個設置類別。使用FOSUserBundle創建多個配置文件表單

我知道如何製作一個自定義配置文件表單(它在FOSUserBundle文檔中),我已經制作了多個FormTypes和一個額外的控制器,但我無法用當前用戶數據填充它。我嘗試以下

$user = $this->container->get('security.context')->getToken()->getUser(); 
// Try 1 
$form = $this->createForm(new InnerCharacteristicsType()); 
// Try 2 
$form = $this->createForm(new InnerCharacteristicsType($user)); 
// Try 3 
$form = $this->createForm(new InnerCharacteristicsType(), $user); 
// Try 4 
$form = $this->createForm(new InnerCharacteristicsType(), array('user' => $user); 

return $this->render('AcmeUserBundle:EditProfile:inner.html.twig', array('form' => $form->createView())); 

(當然,我沒有嘗試他們在同一時間)

我也試圖使新形式的服務加入我的InnerCharacteristics形式向services.yml但我找不到任何文件。 FOSUserBundle中的profile.xml本身也不是很有用,因爲我找不到參數指向的地方。此外,XML到YAML的轉換並不是很容易,因爲關於此的文檔並不是非常有用(因爲FOSUserBundle配置在XML中,我的UserBundle配置在YAML中,因此這是必需的)。

這就是我在我的services.yml現在:

acme_user.inner_characteristics_profile.form: 
    class: Symfony\Component\Form\Form 
    factory_service: form.factory 
    factory_method: createNamed 

我希望有人可以給我一些指點下一步去哪裏。

回答

0

這是創建表單的正確方法:

$form = $this->createForm(new InnerCharacteristicsType(), $user); 

內,您的表格,你應該做這樣的事情:

public function buildForm(FormBuilderInterface $builder, array $options) 
{ 
    // Add fields 
    $builder->add('name', 'text', array('label' => 'Name:')); 
} 

這應該從user對象加載內name財產你的形式。表單是否成功加載?

相關問題