我有一个Symfony2表单中的选择字段的自定义视图。除了价值和标签之外,每个选择还需要一个参数。
View基本上是这样的:
{% block mycustomfield_widget %}
<div>
{% for value, choice in choices %}
<div>
<i class="{{ choice.icon }}"></i>
<input type="radio" value="{{ value }}">
<h3>{{ choice.text }}</h3>
</div>
{% endfor %}
</div>
{% endblock %}
我正试图传递这样的数据:
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'expanded' => true,
'choices' => array(
'value1' => array(
'icon' => 'myIcon1',
'text' => 'myText1'
),
'value2' => array(
'icon' => 'myIcon2',
'text' => 'myText2'
),
)
));
}
不幸的是,似乎Symfony2正在将此解释为分组radiobuttons的输入。
{{ dump(choice) }} yields following:
array(2) { [0]=> object(Symfony\Component\Form\Extension\Core\View\ChoiceView)#1223 (3) { ["data"]=> string(4) "icon" ["value"]=> string(4) "icon" ["label"]=> string(14) "myIcon1" } [1]=> object(Symfony\Component\Form\Extension\Core\View\ChoiceView)#1224 (3) { ["data"]=> string(4) "text" ["value"]=> string(4) "text" ["label"]=> string(14) "myText1" } }
array(2) { [0]=> object(Symfony\Component\Form\Extension\Core\View\ChoiceView)#1223 (3) { ["data"]=> string(4) "icon" ["value"]=> string(4) "icon" ["label"]=> string(14) "myIcon2" } [1]=> object(Symfony\Component\Form\Extension\Core\View\ChoiceView)#1224 (3) { ["data"]=> string(4) "text" ["value"]=> string(4) "text" ["label"]=> string(14) "myText2" } }
我可以选择将多个参数传递给每个选项吗? 我已经google了很多,但所有的解决方案似乎都像是黑客攻击,或者需要创建扩展ChoiceList的类,这看起来有些过分。 对于这样的任务,有没有更简单的解决方案?