我想從樹枝上的單選按鈕的會話中自動選擇值。不幸的是,下面的代碼不適合我。Symfony 2 +樹枝自定義表單字段類型 - 選定的單選按鈕
以我樹枝模板
{{ form_row(reg_form.sex, {'data' : 2}) }}
我的表單字段類型(用戶:: SEX_MALE = 1,用戶:: 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 %}
...
如果我添加「數據=> 2」到setDefaults(...)
,字段女選中,但我找不到方法使它成爲k通過傳遞樹枝的價值。請有人幫助我嗎?
爲什麼你想要將事物從模板傳遞給對象?模板假設是與控制器,模型或其他任何東西分開的,我只是應該創建你已經創建的東西。 – qooplmao
在'twig'中有表單的時候,那麼所有或將要發生的事情都應該發生。你可以在對象類'$ this-> createFormBuilder(Object,{你的選項})中設置你的默認值,然後設置它,或者你可以在你的實體中硬編碼它。 – qooplmao
嗨!感謝您的回答,當然,當我將邏輯移至控制器時,它的工作非常完美。 – bdlk