2012-04-10 2 views
2

私はSymfony 2とFOSUserBundleを使ってアプリケーションを作成しています。自分のUserBundleが正しく設定されています。 My User Entityにはさまざまなカテゴリの属性が多数あります(たとえば、ロケーション設定、個人設定など)。各カテゴリごとに異なるフォームを作成したいので、それぞれの設定カテゴリを別のページに表示できます。複数のプロファイルフォームとFOSUserBundle

カスタムプロファイルフォーム(FOSUserBundleドキュメントにあります)を作成する方法は分かっていますが、既に複数のFormTypeと追加のコントローラを作成していますが、現在のユーザーデータを入力できません。私はservices.ymlするフォームに私はまた私のInnerCharacteristicsを追加することによって、新しい形のサービスを作ってみました

(もちろん、私はそれらを同時にしようとしなかった)次

$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())); 

を試してみました私はこれに関する文書を見つけることができませんでした。 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); 

あなたはこのような何か行う必要があります。これは、内部userオブジェクトからnameプロパティをロードする必要があり

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

をあなたのフォーム。フォームは正常に読み込まれていますか?

関連する問題