我在选择和表单类型方面存在问题。我的问题的简短描述:
我的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字段选项和实际值。我是否必须为此创建自定义树枝功能,或者有内置解决方案?
答案 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”;如果你有几个看起来像这样的选择,将会更容易阅读。