我正在搜索如何以这种方式显示我的表单的所有属性:
例如,在我的实体类中,我有以下属性:
$number
$firstname
$lastname
$gender
我希望像那样展示它而不是经典形式:
<select>
<option value='number'>customized name</option>
<option value='firstname'>customized name</option>
<option value='lastname'>customized name</option>
<option value='gender'>customized name</option>
</select>
<input type="text" name="text"/>
<input type="submit" value="Submit"/>
我搜索了是否有人已经问过这个并且找不到任何东西。
感谢您的帮助!
编辑:
我正在尝试做这样的事情:
$builder
->add('choices' => array('number' => 'Personel Number',
'firstname' => 'First Name',
'lastname' => 'Last Name',)
'required' => true,
))
->add('Search', 'submit')
答案 0 :(得分:1)
正如你所建议的那样,它可以用一个选择实体字段来解决,但是你需要更多的逻辑。
我假设您正在表单类型中构建表单
$choiceKeys = array_keys($options['data']); // where $options['data'] is your entity object! The form type automatically sets this variable
foreach ($choiceKeys as $key) {
$choiceList[$key] = $some_translator->trans($key); // this should be the easiest way to get your fields translated like you want.
}
$builder->add('fieldName', 'choice', [
'choices' => $choiceList
])
此代码段将生成一个包含所选实体列表中所有实体字段的选项字段
然而,这种方法有点草率,我相信你可以找到一个架构替代方案,你不用实体字段填充选择字段。这样做有点麻烦。
无论如何,如果您需要进一步的帮助,请告诉我!
答案 1 :(得分:0)
从symfony 2文档中,您应该使用以下模式:
$builder->add('foo_choices', 'choice', array(
'choices' => array('foo' => 'Foo', 'bar' => 'Bar', 'baz' => 'Baz'),
'preferred_choices' => array('baz'),
));