Symfony 2,来自数据库

时间:2016-03-15 10:22:12

标签: symfony twig choice

我正在尝试显示带有“select”的表单,其中是查询中的“选项”。

 $results = $conn->query(" select gsm, name from Contact");
 $row = $results->fetchAll();

之后:我尝试使用此

 foreach($row as $lign)
    $centretechnique[$lign['gsm']] = $lign['name'];

和formbuilder

$form->add('centretechnique', 'choice', array('required' => false, 'error_bubbling' => true, "empty_value" => "Choisir ", 'choices' => $centretechnique));

我想显示一个选项选项列表,其值为= gsm,显示的值为name

这个方法让我显示,但问题是,如果我有重复选项,只显示选项。

例如,

请求的结果是

  array (size=2)
  0 => 
    array (size=2)
      'gsm' => string '628436515' (length=9)
      'name' => string 'name1' (length=7)
  1 => 
    array (size=2)
      'gsm' => string '628436515' (length=9)
      'name' => string 'name 2' (length=4)

只会显示一个选项。

任何帮助,请

2 个答案:

答案 0 :(得分:1)

如果您想从数据库中填充选择表单类型,那么您应该使用Property

这样的事情:

$form->add(
    'centretechnique',
    'entity',
    array(
        'class' => 'MyBundle:Contact',
        'query_builder' => function (EntityRepository $er) {
            return $er->createQueryBuilder('c')
                ->orderBy('c.name', 'ASC');
        },
        'choice_label' => 'name',
        'choice_value' => 'gsm',
        'multiple'      => false,
        'expanded'      => false,
        'required'      => false,
    )
)

答案 1 :(得分:0)

通过建立您的选择,您可以:

 $centretechnique[$lign['gsm']] = $lign['name'];

所以您的代码会覆盖第二个选择,因为您使用相同的密钥两次...