我想从树枝上的单选按钮上的会话中自动选择值。不幸的是,以下代码对我不起作用。
在我的树枝模板中
{{ 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) }} {{ form_label(child) }}</span>
{% endfor %}
</div>
{% else %}
...
如果我将“data =&gt; 2”添加到setDefaults(...)
,则会选择字段女性,但我无法通过从树枝传递值来找到工作方式。有人可以帮帮我吗?
答案 0 :(得分:-2)
@qooplmao在评论中写道:
当表格在
twig
中可用时,那应该发生的任何事情都会发生。您可以在对象类$this->createFormBuilder(Object, {your options})
中设置默认值,然后进行设置,也可以在实体中对其进行硬编码。