2011-12-09 9 views
2

parentidが-1より大きい場合、私はここに私のFormTypeSymfony2の:フォームビューは - エンティティのフィールドタイプに別のフィールドを追加し

$builder->add('privileges', 'entity', array(
       'label' => 'Privileges', 
       'expanded' => true, 
       'multiple' => true, 
       'class' => 'AcmeStoreBundle:AdminPrivilege', 
       'property'=> 'description', 
       'query_builder' => function(EntityRepository $er) use ($category) 
       { 
          return $er->createQueryBuilder('p') 
            ->where('p.categoryid = :categoryID') 
            ->andWhere('p.parentid = -1') 
            ->setParameter('categoryID', $category->getId()) 
            ->orderBy('p.position', 'ASC'); 
       } 
      )); 

の私buildForm方法で次のコードを持って、それから私はしたいと思いますparentidが-1より大きいチェックボックスの後にさらにフォームコンポーネントを表示します。

私はGoogleで検索しましたが、これを行う方法を見つけることができませんでした。誰でも助けてくれますか?

答えて

1

マット。 私が正しく理解していれば、コントローラからformid構造体に親子とエンティティマネージャを注入できます。 ビルダーにフィールドを追加する前にクエリを実行し、if-elseを使用することができます。例:

public function __construct($parentId, $em) 
{ 
    $this->parentId = $parentId; 
    $this->em = $em; 
} 

public function buildForm(FormBuilder $builder, array $options) 
{ 
    $choices = $this->em->getRepository()->callNeededMethod(); 

    if($this->parentId){ 
     $builder->add([someFieldParams]); 
    }else{ 
     $builder->add([anoutherFieldParams]); 
    } 
} 
関連する問題