2016-01-12 11 views
10

を構築エンティティに応じて形態を変更する - のような:Symfony3:以下のように - - ドキュメント、次の私は初期化Symfony3でフォームを、持っているにformType

public function buildForm(FormBuilderInterface $builder,$options) { 
    $builder->add('name'); 
    if(!$this->booking->getLocation()) { 
     $builder->add('location'); 
    } 
} 

前のSymfony 2.8同じようにformTypeを構築することが可能であった:

$form=$this->createForm(new BookingType($booking),$booking); 

私はまさに私が望むものです:)しかし、Symfony3ではこのメソッドは例外をスローします。 フォームをエンティティに渡すにはどうすればよいですか?

+1

:フォームタイプで

http://symfony.com/doc/current/components/form/ form_events.html – xabbuh

+3

あなたのformTypeで私はあなたが '$ entity = $ builder-> getData()'を実行できると思います。 – pbenard

+0

@ Put12co22mer2 thats - うまくいきます! – cklm

答えて

6

カスタムオプションに基づいてフォームタイプを変更することもできます。コントローラで

public function buildForm(FormBuilderInterface $builder, $options) { 
    $builder->add('name'); 

    if($options['localizable']) { 
     $builder->add('location'); 
    } 
} 

public function configureOptions(OptionsResolver $resolver) 
{ 
    $resolver->setDefaults(array(
     'localizable' => true, 
    )); 
} 

:あなたは、このためのフォームイベントを使用することができます

$form = $this->createForm(BookingType::class, $booking, array(
    'localizable' => !$booking->getLocation(), 
)); 
+0

私のために働く、本当にありがとう、私はデフォルトのオプションを変更する方法を覚えていませんでした! –

関連する問題