2011-05-11 4 views
6

심포니 2.0에서, 폼에서 일대일 연결을 사용하여 드롭 다운 목록을 만드는 방법은 무엇입니까? 당신은 좋은 예를 들어 주시겠습니까?일대일 형태로 연결 되나요?

+0

에 있습니다. 원하는 내용을 자세히 설명해 주실 수 있습니까? – Riley

+0

일대일 관련 테이블에서 콤보 박스를 만들고 싶습니다. – Zeck

답변

11

나는 그것을 이해하는 방식으로 질문에 대답하려고 노력할 것입니다. 하나의 University 개체에 Faculty 개체가 바인딩되어 있다고 가정 해 보겠습니다. 따라서 교수진을 만들거나 편집하는 데 사용되는 양식에서 모든 대학의 콤보 상자를 데이터베이스에 표시하고 사용자는 그 중 하나를 선택합니다. 정확하게 이것을 수행하는 특별한 Symfony 필드 유형이 있습니다 : 엔티티 유형.

// Application\AcmeBundle\Form\Type\FacultyType 
public function buildForm(FormBuilder $builder, array $options) 
{ 
    $builder->add('name'); 
    $builder->add('university', 'entity', array(
     // The class of the entity used as a combo box item 
     'class' => 'AcmeBundle:University', 

     // The property of the entity displaying the entity as text 
     'property' => 'name', 

     // The query builder used to populate the combo box, accepts 
     // a QueryBuilder object or a \Closure like below 
     'query_builder' => function(EntityRepository $repository) { 
      // This will return a query builder selecting all universities 
      return $repository->createQueryBuilder('u'); 
     } 
    )); 
} 

주 : 엔티티 필드 유형을 설정할 수 있습니다 다른 속성이있다, 당신이 취할 초대 아래는 내가 교수 양식을 작성하는 데 사용되는 내 FacultyType 객체에서 사용하는 buildForm 방법의 코드는 이것에 정보 더를 위해 이것을 page보십시오.

렌더링됨에 따라 데이터베이스에 설정 한 모든 대학의 콤보 상자가 표시됩니다. 사용자가 양식을 저장하면 선택한 대학은 설정자를 통해 양식에 바인딩 된 교수 객체에 지정됩니다. 아마도 콤보 상자 대신 드롭 다운 목록을 렌더링 할 수 있습니다. 여러 엔티티를 선택해야하는 경우 필드 유형 엔티티의 'multiple' 옵션이 유용 할 수 있습니다.

이 예에서 보여준 예제는 일대일 관계가 아니라 Faculty 개체의 경우 다 대일이고 University 개체의 경우 일대 다입니다. 일 - 대 - 일 관계는보다 구체적인 관계 일 것입니다. 즉, University에는 고유 한 Address이 있습니다. 이 경우 콤보 상자는 유용하지 않을 것입니다. 대학은 주소가 하나 뿐이므로 하위 양식이 더 적절할 수 있기 때문입니다. 그것이 많은 adresses을 가지고 있다면, 그것은 대학과 그것의 교수들 사이의 관계처럼 일대 다 관계가됩니다.

질문에 올바르게 답변 할 지 확실하지 않지만 최종 해결책을 찾길 바랍니다.

안부, 매트