簡體   English   中英

帶有 FOSUserBundle 的多個配置文件 forms

[英]Multiple Profile forms with FOSUserBundle

我正在使用 Symfony 2 和 FOSUserBundle 創建一個應用程序。 我自己的 UserBundle 配置正確。 我的用戶實體有很多不同類別的屬性(例如位置設置、個人設置等)所以我想為每個類別制作不同的 forms 以便我可以在不同的頁面上顯示每個設置類別。

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

$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 Form 添加到 services.yml 來使新的 forms 成為一項服務,但我找不到任何關於此的文檔。 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

我希望有人能給我一些指示 go 的下一個位置。

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

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

在你的表單中你應該做這樣的事情:

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

這應該從您的表單中的user object 加載name屬性。 表單加載成功了嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM