I would like auto select value from session on radio button from twig. Unfortunately following code doesn't work for me.
In my twig template
{{ form_row(reg_form.sex, {'data' : 2}) }}
My form field type (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';
}
}
And my display customization:
{% 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 %}
...
If I add "data => 2" to setDefaults(...)
, field female becomes selected, but I can't find way to make it work by passing value from twig. Could someone help me please?
twig
then everything that is or was going to happen to it should have happened. You could set your default in the object class$this->createFormBuilder(Object, {your options})
and then set it or you could hard code it in your entity. – qooplmao