2017-11-11 18 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-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() 
     )); 
    }