实体类型的默认值

问题描述:

我在我的表单中有一个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://*.com/questions/19577982/set-default-value-for-entity- type-in​​-symfony2) – maches

您可以设置在控制器指定的操作选择框的值。你不能直接设置形式。

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

我得放函数setEntityType的参数中的值'75'? –

+0

您可以从数据库中找到75条记录的实体。然后在setEntityType()中设置它的实体。 –

当创建表单类型时,通过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() 
     )); 
    }