2017-11-11 234 views
0

我在我的表單中有一個EntityType,我想設置一個默認的選定值,這可能嗎?實體類型的默認值

這是我在我的FormType代碼:

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

在HTML比賽中選擇的每個選項在我的數據庫中的ID值:

<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-for-entity- type-in​​-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() 
     )); 
    }