Symfony2 - 如何在表单行中显示数据

时间:2016-08-17 15:58:47

标签: symfony symfony-forms symfony-2.7

我希望显示的选项字段类型不仅仅是标签和小部件。

假设我有一个stdclass对象数组:

这是我的控制器代码     

$foo = new stdClass();
$foo->icon = 'fooicon.gif';
$foo->name = 'foo';

$bar = new stdClass();
$bar->icon = 'baricon.gif';
$bar->name = 'bar';    

$formdata->choices = array($foo, $bar);

$form = $this->createForm(new CustomForm(), $formdata);

这是我的表单类型

// FormType
public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        ->add() // Some other fields, not useful

    $builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) {
        $data = $event->getData();
        $form = $event->getForm();

        // There are some checks here ... let's summarize them by using true
        if (true) {
            $form->add('myChoices', 'choice', array(
                'choices' => $data->choices,
                'choice_label' => 'name',
                'choices_as_values' => true,
                'multiple' => true,
                'expanded' => true,
            ));
        }
    });
}
?>

template.html.twig

    {% if form.myChoices is defined %}
         {{ form_row(form.myChoices) }}
    {% endif %}

有了这个,我有一个复选框,每个选项都有一个名称作为标签。我想要实现的是显示每个复选框的图标和名称。 我怎么能这样做?

我正在使用symfony 2.7

1 个答案:

答案 0 :(得分:0)

在Twig中,您可以使用for循环来获取带有标签的多个值。

与下面的代码一样:

{% for myChoices in form.myChoices %}
    <label class="check">
        {{ form_errors(myChoices) }}
        {{ form_widget(myChoices) }}
        <span>{{ myChoices.vars.label }}</span>
    </label>
{% endfor %}