EntityType中的默认值

时间:2017-11-11 12:45:24

标签: php forms symfony doctrine-orm twig

我的表单中有一个EntityType,我想设置一个默认的选择值,它可能吗?

这是我在FormType中的代码:

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

HTML中select的每个选项的值与我的数据库中的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>

我想将所选值设置为&#39; 75&#39; (法国),它可能吗?

提前致谢

1 个答案:

答案 0 :(得分: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,
        ));

在表单类型中添加构造函数。然后替换代码......

  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

中添加your_default_value空数组
public function setDefaultOptions(OptionsResolverInterface 
 $resolver)
    {
        $resolver->setDefaults(array(
            'data_class' => 'YourEntity',
            'your_default_value' => array()
        ));
    }