2016-04-20 34 views
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在樹枝節文件。但我得到它沒有什麼

回答

0

如果你需要重寫自定義字段,你必須prefix it with underscore :(如:

{% block _trip_type_widget %} 
    <div class="tabs-way__item"> 
     {{- form_label(form) -}} 
     {{- form_widget(form) -}} 
     {{- form_errors(form) -}} 
    </div> 
{% endblock _trip_type_widget %} 
+0

其實它並沒有幫助,我不知道爲什麼,通過名字塊'_trip_type_widget','_trip_widget','tripType_widget','trip_type_widget'不工作。 – Logans

+0

使用Symfony Profiler(Form調試器)查看[唯一塊前綴](http://i.stack.imgur.com/OAyAW.png )你的表單部件。 – jkucharovic