Symfony选择Array中的标签

时间:2016-03-19 21:08:30

标签: php symfony

我尝试使用在>添加表单构建器之前执行的查询的数组值来填充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,

            ))

1 个答案:

答案 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;