2017-11-11 13 views
0

フォームにEntityTypeがあり、デフォルトの選択値を設定したいと思っていますか?EntityTypeのデフォルト値

これは私にformTypeで私のコードです:

->add('pays', EntityType::class, [ 
      'class' => Pays::class, 
      'choice_label' => function (Pays $pays) { 
       return $pays->getNomFrFr(); 
      }, 
     ]) 

私のデータベース内のidを持つHTMLの試合での選択の各オプションの値:

<label for="boutique_pays" class="required">Pays</label><select id="boutique_pays" name="boutique[pays]"> 
    <option value="1">Afghanistan</option> 
    <option value="2">Albanie</option> 
    <option value="3">Antarctique</option> 
    <option value="4">Algérie</option> 
    ... 
    <option value="237">Wallis et Futuna</option> 
    <option value="238">Samoa</option> 
    <option value="239">Yémen</option> 
    <option value="240">Serbie-et-Monténégro</option> 
    <option value="241">Zambie</option> 
</select> 

私は選択を設定したいと思います価値を '75'(フランス)にすることは可能でしょうか?

ありがとうございます

+0

[ドキュメント](HTTPSでyour_default_value空の配列を追加します。 //symfony.com/doc/current/reference/forms/types/entity.html#data)と[考えられる解決法](https://stackoverflow.com/questions/19577982/set-default-value-forent- symfony2で入力) – maches

答えて

0

コントローラで指定された動作から選択ボックスの値を設定できます。フォームに直接設定することはできません。

$form->setEntityType($entity); 
+0

私は置く必要があります関数setEntityTypeのパラメータの値 '75'? –

+0

データベースから75レコードのエンティティを見つけることができます。次に、そのエンティティをsetEntityType()に設定します。 –

0

フォームタイプを作成するときにEntityManagerとデフォルト選択肢objectIDを渡します。

$repository = $this->getDoctrine()->getRepository(YourClass)->find($id); 
$yourDefaultValue = $repository->getId(); 


$form = $this->createForm(new YourTypeType($entityManager), $yourEntity, array(
      'action' => $this->generateUrl('route_create'), 
      'method' => 'POST', 
      'your_default_value' => $yourDefaultValue, 
     )); 

...あなたのコードを置き換えtype.thenフォームで

private $em; 

    public function __construct($em) { 
     $this->em = $em; 
    } 

    ->add('pays', EntityType::class, [ 
     'class' => Pays::class, 
     'choice_label' => function (Pays $pays) { 
      return $pays->getNomFrFr(); 
     }, 
     'data'=>$this->em->getReference("YourEntity",$options['your_default_value']) 

    ]) 

をコンストラクタを追加し、最終的に、あなたのsetDefaultOptions

public function setDefaultOptions(OptionsResolverInterface 
$resolver) 
    { 
     $resolver->setDefaults(array(
      'data_class' => 'YourEntity', 
      'your_default_value' => array() 
     )); 
    } 
関連する問題