2016-03-03 34 views
8

Aşağıdaki form var:seçim alanı varsayılan değer

public function buildForm(FormBuilderInterface $builder, array $options) 
{ 
    $builder 
    ->add('type', ChoiceType::class, array(
     'expanded' => true, 
     'multiple' => false, 

     'choices' => array(
      'Friend' => 'friend', 
      'Guide' => 'guide' 
     ) 
    )); 
} 

nasıl Form işlendiğinde 'Arkadaş' onay kutusu varsayılan olarak kontrol edilmelidir yapabilir?

cevap

7

data seçeneğiyle denemelisiniz, ancak nesnenin içinde kayıtlı bir veri bile bulunmadığı durumda, çünkü başka bir şeyi geçersiz kılar.

Önemli: Eylem oluşturmak için değil, eylem düzenlemek için iyi.

public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $builder 
     ->add('type', ChoiceType::class, array(
      'expanded' => true, 
      'multiple' => false, 

      'choices' => array(
       'Friend' => 'friend', 
       'Guide' => 'guide' 
      ), 
      'data' => 'friend' 
     )); 
    } 

Official link

Özü: Bir form oluşturduğunuzda bir nesne varsa

, her alan başlangıçta (formun alanı nesnesinin tekabül özelliğinin değeri görüntüler forma bağlı 'dir). Eğer form veya sadece tek bir alan için başlangıç ​​değeri geçersiz kılmak istiyorsanız, veri seçeneği

+0

Teşekkür ederim, işe yaradı! indirgenmiş "veri" => 'arkadaş' ' –

+1

Bir şey değil, ben sizinkilerle aynı durumda futur insanlar için güncelleme yapıyorum. – pbenard

+3

Bunun güvenli olduğunu düşünmüyorum: Symfony'nin kendi belgelerinden> __The veri seçeneği, her zaman, render edilirken etki alanı verisinden (nesne) alınan değeri geçersiz kılar. Bu, formun halihazırda sürmekte olan bir nesneyi düzenlediğinde nesne değeri de geçersiz kılınır ve formun gönderildiği zaman kalıcı değerinin kaybolmasına neden olur} – user2268997

6

Kullanım empty_data form alanı seçeneği de ayarlayabilirsiniz. (dinamik olarak ayarlamadığınız sürece, yayınlanan tüm verileri geçersiz kılacağı için) (data değil). Karmaşık durumlar için

public function buildForm(FormBuilderInterface $builder, array $options) 
{ 
    $builder 
    ->add('type', ChoiceType::class, array(
     'expanded' => true, 
     'multiple' => false, 

     'choices' => array(
      'Friend' => 'friend', 
      'Guide' => 'guide' 
     ), 
     'empty_data' => 'friend' 
    )); 
} 

Diğer bir seçenek Sf Dynamic Form Events kullanmaktır.