0
我試圖重寫字段外觀。Symfony窗體重寫字段外觀
我創建了自定義表單類型:
namespace AppBundle\Form\Type\Frontend\Search;
/**/
class TripTypeType extends AbstractType
{
/**
* {@inheritdoc}
*/
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'choices' => [
'One-way',
'Round-trip',
],
'multiple' => false,
'expanded' => true,
'required' => false,
'empty_value' => false,
]);
}
/**
* {@inheritdoc}
*/
public function getParent()
{
return ChoiceType::class;
}
}
之後,我加入這一領域的父窗體:
namespace AppBundle\Form\Type\Frontend\Search;
/***/
class FlightSearchType extends AbstractType
{
/**
* {@inheritdoc}
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('tripType', TripTypeType::class)
->add('airports', AirportsType::class)
->add('flightAt', FlightDatesType::class)
->add('flightClass', FlightClassType::class);
}
}
和渲染本場這樣的:
{% for type in form.tripType %}
{% if loop.index == 1 %}
{% set way_id = 'one-way' %}
{% else %}
{% set way_id = 'round-trip' %}
{% endif %}
{{ form_widget(type, {
'id': way_id,
'attr': {'class': 'tabs-way__radio'},
'label_attr': {'class': 'tabs-way__label', 'for': way_id}
}) }}
{% endfor %}
所以我想要得到的是:
<div class="tabs-way__item">
<input type="radio" id="one-way" name="flight_search[tripType]" class="tabs-way__radio" value="0">
<label class="tabs-way__label" for="one-way">One-way</label>
</div>
對於我試圖覆蓋部件此字段:
{# app/Resources/views/Form/fields.html.twig #}
{% block trip_type_widget %}
<div class="tabs-way__item">
<input type="radio" {{ block('widget_attributes') }}{% if value is defined %} value="{{ value }}"{% endif %}{% if checked %} checked="checked"{% endif %} />
{{ block('form_label') }}
</div>
{% endblock trip_type_widget %}
而我包括config.yml
在樹枝節文件。但我得到它沒有什麼
其實它並沒有幫助,我不知道爲什麼,通過名字塊'_trip_type_widget','_trip_widget','tripType_widget','trip_type_widget'不工作。 – Logans
使用Symfony Profiler(Form調試器)查看[唯一塊前綴](http://i.stack.imgur.com/OAyAW.png )你的表單部件。 – jkucharovic