Symfony 2 + Twig自定义表单字段类型 - 选择单选按钮

时间:2014-01-05 23:32:26

标签: symfony twig

我想从树枝上的单选按钮上的会话中自动选择值。不幸的是,以下代码对我不起作用。

在我的树枝模板中

{{ form_row(reg_form.sex, {'data' : 2}) }}

我的表单字段类型(User :: SEX_MALE = 1,User :: SEX_FEMALE = 2)

<?php

namespace FWM\CoreBundle\Form\Type;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;

use FWM\CoreBundle\Entity\User;

use Symfony\Component\OptionsResolver\Options;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;

/**
 * A form field for selecting user's sex
 */
class SexType extends AbstractType
{
    /**
     * {@inheritDoc}
     */
    public function setDefaultOptions(OptionsResolverInterface $resolver)
    {
        $resolver->setDefaults([
            'choices' => array(
                User::SEX_MALE => 'label.form.male',
                User::SEX_FEMALE => 'label.form.female'
            ),
            'label' => 'label.form.sex',
            'expanded' => true,
        ]);
    }    

    /**
     * {@inheritDoc}
     */
    public function getParent()
    {
        return 'choice';
    }

    /**
     * {@inheritDoc}
     */
    public function getName()
    {
        return 'user_sex';
    }
}

我的显示器定制:

{% block form_row %}
    {% set error = false %}
    {% if errors %}
        {% set error = true %}
        {% set attr = attr|merge({'class' : attr.class|default('') ~ ' error'}) %}
    {% endif %}
    {{ form_widget(form, {'attr' : attr, 'error': error}) }}
{% endblock form_row %}


{% block choice_widget %}
{% spaceless %}
    {% if expanded %}
        {% set attr = attr|merge({'class' : attr.class|default('') ~ ' radio-row'}) %}

        <div {{ block('widget_container_attributes') }}>

        {{dump(form)}}

        {% for child in form %}

            <span class="unbreakable">{{ form_widget(child) }}&nbsp;{{ form_label(child) }}</span>

        {% endfor %}
        </div>
    {% else %}
...

如果我将“data =&gt; 2”添加到setDefaults(...),则会选择字段女性,但我无法通过从树枝传递值来找到工作方式。有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:-2)

@qooplmao在评论中写道:

  

当表格在twig中可用时,那应该发生的任何事情都会发生。您可以在对象类$this->createFormBuilder(Object, {your options})中设置默认值,然后进行设置,也可以在实体中对其进行硬编码。