我的buildForm
FormType
方法中包含以下代码
$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');
}
));
如果parentid
大于-1,那么我想在创建parentid
大于-1的复选框后显示更多表单组件。
我搜索了Google并且无法找到方法来执行此操作,有人可以帮忙吗?
答案 0 :(得分:1)
垫。 如果我理解正确,你可以从控制器注入parentid和实体管理器来形成类型构造。 因此,您可以在向构建器添加字段之前运行查询,并使用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]);
}
}