2012-12-15 27 views
6

Adminクラスを拡張するとSonataAdminBundleはメソッドconfigureFormFieldsを返します。Sonata Adminバンドルの既存のSymfony FormTypeの使用方法configureFormFields?

このメソッドでは、FormMapperクラスが使用されます。

このクラスを作成したエンティティについては、私はすでにsymfonyの典型的な方法でFormTypeクラスを作成しています。

FormMapperを使用してフォームプロパティを再度定義する代わりに、そのクラスを使用するにはどうすればよいですか?

+0

configureFromFields昔ながらのパブリック関数buildForm(FormBuilderInterface $ビルダー、配列$オプション) { $ビルダーと同じ - >を追加( 'first_nameの') – Liutas

答えて

1

のようなもの:私は今日まったく同じものを持っていた

public function configureFormFields(FormMapper $formMapper) 
{   
    $form = new ReviewFormType(); 
    $form->buildForm($formMapper->getFormBuilder(),array()); 
} 
0

(カスタムフォームタイプを定義し、ソナタに使用しようとした)きれいな方法を見つけることの時間後、私はこの思い付いた:

カスタムフィールドタイプと

formMapper->add('your_field', new YourType($your_params), array(     
       ), array('type' => 'form')) 

自分のフィールド名を持つyour_fieldを置き換え、

new YourTypeあなたのフィールドのコンストラクタのパラメータを持つ

$your_params

第四パラメータarray('type' => 'form')が、それはあなたのフォームを入力するかについてソナタを伝え、非常に重要であるが、(ソナタは文句を言わないあなたのタイプのオブジェクトから自動的に決定)、実際には私のカスタムフィールドは、(form型を拡張しますそれは、独自のフィールドを持つ埋め込みフォームです)私はそれを指定します。もしあなたの型が何か他のものを拡張し、それを指定すればうまくいけばうまくいくでしょう。