Symfony2 - 将自定义数据集传递给选择字段视图

时间:2014-09-14 15:02:45

标签: php html forms symfony

我有一个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的类,这看起来有些过分。 对于这样的任务,有没有更简单的解决方案?

0 个答案:

没有答案