2012-03-21 2 views
1

배열 컬렉션에서 특정 값을 제외하려는 Symfony2에서 형식을 얻는 데 문제가 있습니다. 또는 내가 어떻게 (어디에서 제외 할 것인가) 말을해야합니다. .ManytoOne Array Colletion/Formbuilder의 특정 값 제외

class Tag 
{ 

/** 
* @ORM\Id 
* @ORM\Column(type="integer") 
* @ORM\GeneratedValue(strategy="AUTO") 
*/ 
protected $id; 

/** 
* @ORM\Column(type="string") 
*/ 
protected $name; 

/** 
* @ORM\ManyToOne(targetEntity="Movie", inversedBy="videotags") 
* @ORM\JoinColumn(name="movie_id", referencedColumnName="id") 
*/ 
protected $movie; 

// ... 

에서 : (Movie-> 태그 = OneToMany) 영화 그리고 그 verca에 ManyToOne 관계를 가지고

public function newTagAction() 
{ 
    $tag = new Tag(); 
    $form = $this->createForm(new tagType(), $tag); 
    return $this->render('MyMyBundle:Admin:newTag.html.twig', array('form' => $form->createView())); 

} 

그리고 Tag.php 법인 :

이 내 newTag 조치입니다 TagType.php 형식 :

class TagType extends AbstractType 
{ 
public function buildForm(FormBuilder $builder, array $options) 
{ 
    $builder 
     ->add('name') 
     ->add('movie') // This is where certain movies should be excluded, it displays an array collection of all movies 
    ; 
} 

도움을 주시면 감사하겠습니다!

감사합니다.

답변

3

사용자 지정 쿼리를 사용하여 원하는 결과 만 얻을 수 있습니다.

documents에 설명되어 있습니다. 다음은 간단한 예입니다.

$builder->add('movie', 'entity', array(
    'class' => 'MyMovieBundle:Movie', 
    'query_builder' => function(EntityRepository $er) { 
     return $er->createQueryBuilder('u') 
      ->where('u.name = ?1'); 
    }, 
)); 
+0

안녕하세요. 방금 위의 줄을 추가 한 다음 "catch 가능한 치명적인 오류 : 인수 1이 My \ MyBundle \ Form \ {closure}에 전달됨()은 My \ MyBundle \ Form \ EntityRepository의 인스턴스 여야합니다. 인스턴스는 ME \ MEBundle \ Repository입니다. \ MovieRepository 주어진 ... 이름 공간을 추가해야합니까? – Mike

+0

신경 쓰지 마세요 ... Doctrine \ ORM \ EntityRepository;을 사용하십시오 ;-) 많은 감사합니다! +1 – Mike