在列表视图中显示值表单选项字段(formtype)(Symfony2)

时间:2013-10-20 12:40:25

标签: php forms symfony twig

我在选择和表单类型方面存在问题。我的问题的简短描述:

我的formtype包含有选择的字段

->add('fieldName2', 'choice', array(
        'label' => 'Some label',
        'choices' => array(
            0 => 'Option 1',
            1 => 'Option 2',
            ...,
            n => 'Option n'
        ),
    ))

在数据库中,该字段为int(必须是数字)。现在出现问题:我想列出该表的所有记录。结果如下:

fieldName1|fieldName2
----------|----------
somevalue | 0
somevalue | 1
somevalue | 2

但我不会这样:

fieldName1|fieldName2
----------|----------
somevalue | Option 1
somevalue | Option 2
somevalue | Option 3

如何在模板中组合formtype字段选项和实际值。我是否必须为此创建自定义树枝功能,或者有内置解决方案?

1 个答案:

答案 0 :(得分:2)

假设$data包含控制器中数据库的字段,请创建“choices”数组:

$choices = array();
foreach ($data as $elem)
{
  $choices[$elem] = "Option {$elem}";
}

然后,创建表单并在构造函数中传递您的选择数组。

$form = $this->createForm(new YourFormType($choices), new YourFormData());

在表单中添加构造函数:

private $choices;

// (...)

public function __construct(array $choices)
{
  $this->choices = $choices;
}

最后,使用您之前准备的一系列选项创建您的字段。

(...)
->add('fieldName2', 'choice', array(
        'label' => 'Some label',
        'choices' => $this->choices,
))

注意:用较少混淆的名称替换属性名称“choices”;如果你有几个看起来像这样的选择,将会更容易阅读。