심포니 2.0에서, 폼에서 일대일 연결을 사용하여 드롭 다운 목록을 만드는 방법은 무엇입니까? 당신은 좋은 예를 들어 주시겠습니까?일대일 형태로 연결 되나요?
답변
나는 그것을 이해하는 방식으로 질문에 대답하려고 노력할 것입니다. 하나의 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을 가지고 있다면, 그것은 대학과 그것의 교수들 사이의 관계처럼 일대 다 관계가됩니다.
질문에 올바르게 답변 할 지 확실하지 않지만 최종 해결책을 찾길 바랍니다.
안부, 매트
당신은 Symfony2에서 엔티티 필드 유형을 사용해야합니다. 좋은 예가 http://symfony.com/doc/current/reference/forms/types/entity.html
에 있습니다. 원하는 내용을 자세히 설명해 주실 수 있습니까? – Riley
일대일 관련 테이블에서 콤보 박스를 만들고 싶습니다. – Zeck