나는 최근 Symfony 2 양식을 사용하고 있는데, 이는 간단한 양식에 아주 좋습니다.Symfony 양식과의 분리
그러나 선택 상자 또는 이와 유사한 용도로 사용하려면 양식에 연결된 엔터티 목록이 필요합니다. 여러 블로그 게시물과 심포니 워드 프로세서, 그들은
//BlogPostType implements FormTypeInterface
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('category', null, array(
'property' => 'name',
'query_builder' => function(EntityRepository $er) use($options) {
return $er->createQueryBuilder('category')->orderBy('category.name', 'ASC');
}
);
}
I 도메인 중심의 디자인과 우려의 특히 분리에 많은 관심을 지불하고로서, 나는 열심히 그 믿고 찾을 수 ...이 같은 제안 Symfony에서 관련 엔티티를 사용자 정의 양식 유형에 바인드하는 유일한 옵션은 사용자 정의 양식 유형으로 해당 항목을 조회하는 것입니다.
내 의견으로는 양식이 쿼리되지 않아야하므로 SoC를 위반합니다. 이 방법은 폼이 항상 같은 엔티티를 취하지 만 표시 할 엔티티를 선택해야하는 것은 아닙니다 ...
폼 빌더에게 폼을 작성하도록 요청한 컨트롤러는 관련 오브젝트를 사용자 정의 폼 형식 생성자 또는 그 ...
//BlogPostType implements FormTypeInterface
public function __construct(array $categories) {
$this->categories = $categories;
}
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('category', null, array(
'property' => 'name',
'choices' => $this->categories
);
}
이 방법을 얻을 수있는 방법을 알고 있습니까?
옵션을 통해 전달하는 것이 좋지만, 엔티티 목록을 'entity'유형의 양식 컨트롤에 전달하는 방법은 무엇입니까? Symfony 문서에 따르면 엔터티에 대해서만 쿼리 할 수 있습니다 ... – Stivni
질문에 표시된 방법이 정확합니다. 엔터티 컬렉션을 '엔터티'유형의'choices' 옵션에 전달하십시오. –