我尝试使用在>添加表单构建器之前执行的查询的数组值来填充Symfony中的选项下拉列表。尽管转储($ categories)显示了正确的值,但我无法获得实际的标签或值。下拉列表仅包含0,1,2。类别包含 - > getName和 - > getId但我无法引用这些。
$categories = $em->getRepository('AppBundle:Category')
->createQueryBuilder('t')
->where('t.userCreate = :user_id')
->andWhere('t.type = :catType')
->setParameter('user_id',$userID)
->setParameter('catType',$type)
->getQuery()
->getResult();
$builder
->add('taskCategory', 'choice', array(
'choices' => $categories,
'placeholder' => 'Choose a category',
'choices_as_values' => true,
))
答案 0 :(得分:1)
以下是我解决这个问题的方法。我用一个函数从标签中分离出查询:
->add('taskCategory','entity',array(
'class'=>'AppBundle\Entity\Category',
'choices'=>$this->fillCategories($options),
'choice_value'=>'id',
'choice_label'=>'name',
))
" fillCategories"函数刚刚返回所需的数据。这里的关键是指定类型'实体'代替'选择'在 - >添加。
$categories = $em->getRepository('AppBundle:Category')
->createQueryBuilder('t')
->where('t.userCreate = :user_id')
->andWhere('t.type = :catType')
->setParameter('user_id',$userID)
->setParameter('catType',$type)
->getQuery()
->getResult();
return $categories;