2016-05-17 3 views
2

buildForm()現在のフォームフィールドノードの完全なID /名前を抽出したいと思います。 $builder->getName()戻り、現在のノードの名前だけが、私は、たとえば、完全なプロパティパスを必要とする:SymfonyはフォームフィールドのID /名前をどのように生成しますか?

id="type_employments_0_location" 
name="type[employments][0][location]" 

フォームを構築しながら、これを生成する方法はありますか?

フォームが構築されるときに各フィールドの「強制」を検索するカスタムの必須フィールドタイプ拡張に取り組んでいます。したがって、私はオプションの配列を変更できるように、buildForm()に完全なプロパティパスが必要です。

答えて

0

:フォームフレームワークによって生成された完全性パスがbuildForm()に利用可能ではなくbuildView()finishView()に利用可能です。完全なプロパティパスへのアクセスが必要な場合に使用します。

1

FormConfigInterfaceから、$builder->getPropertyPath()を使用できるはずです。

PropertyPathInterfaceオブジェクトが返されます。実際のプロパティパスを文字列として使用するだけです(つまり、print $builder->getPropertyPath()type[employments][0][location]となります)。

+0

これは 'buildForm()'で動作しますか? 'buildForm()'で '$ builder-> getPropertyPath()'を呼び出すだけでnullが返されるようです。 'buildView()'の中で '$ form-> getPropertyPath()'を呼び出すことはできますが、それは私がやりたいことを達成するためのフォームの作成には遅すぎます。 – nurikabe

+0

私はFormTypeの 'buildForm'メソッドの中から試してみました。 – chalasr

+0

Hmm ..あなたはどのSymfonyのバージョンを使用していますか?私は2.8です。 – nurikabe

0

実際、これはかなり簡単です。 すべてのフィールドタイプに対して、多くの変数が割り当てられています。 symfonyのドキュメント(Form Variables Reference)から

<label for="{{ form.fieldname.vars.id }}">...</label> 

の変数は、すべてのフィールドタイプに共通しています。特定のフィールドタイプには の変数があり、いくつかの変数は実際には特定のタイプの にのみ適用されます。

テンプレートにフォーム変数があり、名前フィールドの変数を が参照するようにするには、変数にアクセスするにはFormViewオブジェクトのpublic varsプロパティを使用して を実行します。一言で言えば

Form Variables Reference

+0

オプション配列に値を追加できるように、ビューが作成される前に 'builldForm()'でこれが必要です。私はその問題を明確にします。 – nurikabe

関連する問題