2015-01-11 6 views
1

내가 폼 빌더에서 문제가 작동하지 않음 (데이터), 나는 상자 목록을 매핑되지와 나는이 같은 기본 값으로 설정하려면 :Symfony2 폼 빌더 엔티티 (매핑되지 않음) 값을 설정 기본값을 설정하는 동안

 ->add('kuponaiSuppliers', 'entity', array(
      'class' => 'CMSBundle:KuponaiUsers', 
      'label'=> "Supplier:", 
      'data'=>5, 
      'query_builder' => function(EntityRepository $er) use ($options) { 
        return $er->createQueryBuilder('ku') 
         ->select("ku") 
         ->andWhere("ku.delDate is null") 
         ->andWhere("ku.id > 1"); 
       }, 
      'property'=> 'name', 
      'multiple' => false, 
      'expanded' => false, 
      'required' => true, 
      'mapped' => false 
     )) 

하지만 그것은 단지 선택된 옵션을 사용하지 않고 목록을 내보기에 들어갈 모든 :

<select id="acme_cmsbundle_kuponaimain_kuponaiSuppliers" name="acme_cmsbundle_kuponaimain[kuponaiSuppliers]"> 
    <option value="2">Supplier 1</option> 
    <option value="5">Supplier 2</option> 
    <option value="6">Supplier 3</option> 
</select> 

나는 데이터가 기본 값을 설정해야 속성이라고 생각하지만 그렇지 않습니다.

나뭇 가지 코드 :

<tr> 
<td colspan="3">{{ form_label(form.kuponaiSuppliers) }}{{ form_widget(form.kuponaiSuppliers) }}</td> 
</tr> 

+0

나뭇 가지 코드를 보여줄 수 있습니까? –

답변

4

당신은 기본으로 할 개체의 참조를 얻을 필요가있다.

'data' => $this->em->getReference("CMSBundle:KuponaiUsers", 5) // 5 will be the default. 

$this->em은 엔티티 관리자를 가리 킵니다. 컨트롤러에 $this->getDoctrine()->getManager() 일 수 있습니다.

FormType 클래스를 사용하는 경우 엔티티 관리자를 삽입해야합니다. 컨트롤러에 폼을 만들면 문제없이 엔티티 관리자에 액세스 할 수 있습니다.

메소드 EntityManager # getReference ($ entityName, $ identifier)를 사용하면 데이터베이스에서 해당 엔티티를로드하지 않고도 식별자가 알려진 엔티티에 대한 참조를 얻을 수 있습니다.

작동해야합니다.