Symfony 4 Twig自定义表单字段模板,用于收集复选框

时间:2019-12-18 13:54:56

标签: symfony twig symfony4

在使用复选框集合将html更改为像这样的表中时,我使用自定义模板没问题:

{% form_theme form _self %}

{% block _packing_dispatch_form_group_formsA_0_packagingList_widget %}
    <div {{ block('widget_container_attributes') }}>
        <div class="table-responsive">
            <table>
                {%- for child in form %}
                    <tr>
                        <td class="firstCol">{{- form_label(child, null, {translation_domain: choice_translation_domain}) -}}</td>
                        <td>{{- form_widget(child) -}}</td>
                    </tr>
                {% endfor -%}
            </table>
        </div>
    </div>
{% endblock %}

但是现在集合已更改,因此它包含另一个表单类型的集合,该集合又包含复选框,我不知道现在如何将相同的模板应用于第二个表单类型的新集合。

代码如下:

PackagingDispatchFormGroupType.php

$data= [];
            $packingForm = new PackingDispatchForm();
            $data[] = $packingForm;

            $builder->add('formsA', CollectionType::class,[
               'entry_type'=>PackingDispatchFormType::class,
                'entry_options'=>[
                    'user'=>$this->user
                ],
                'allow_add'=>true,
                'allow_delete'=>true,
                'data'=>$data,
                'mapped'=>false
            ]);

PackagingDispatchFormType.php

->add('packagingList',ChoiceType::class,[
                'multiple'=>true,
                'expanded'=>true,
                'attr'=>[
                    'class'=>'packagingListInput'
                ],
                'choices'=>[
                    'Digitherm Camera, CDX8950-400' => 'Digitherm Camera, CDX8950-400',
                    'Battery, CDX370PACK' => 'Battery, CDX370PACK',
                    'Battery Tab, CDX8950-514' => 'Battery Tab, CDX8950-514',
                    'Memory Card, CDX8IS' => 'Memory Card, CDX8IS',
                    'Memory Card Reader, CDXUSBR' => 'Memory Card Reader, CDXUSBR',
                    'Charging Station, CDX370D' => 'Charging Station, CDX370D',
                    'Power Supply (3x Adapters), CDX370C' => 'Power Supply (3x Adapters), CDX370C',
                    'Australian Adapter' => 'Australian Adapter',
                    'Access Key, XP-100' => 'Access Key, XP-100',
                    'Wrist Strap, CDX8950-550' => 'Wrist Strap, CDX8950-550',
                    'Fragrance Card, CDX8950-512' => 'Fragrance Card, CDX8950-512',
                    'Accessory Card' => 'Accessory Card',
                    'Instructions For Safe User, CDX8950-511 Rev. A' => 'Instructions For Safe User, CDX8950-511 Rev. A',
                    'User Manual, CDX8950-507, Rev. A' => 'User Manual, CDX8950-507, Rev. A',
                    'Battery Warning Card' => 'Battery Warning Card',
                    'Charger Instruction Leaflet' => 'Charger Instruction Leaflet',
                    'Declaration Of Conformity, SOM15, Rev. A' => 'Declaration Of Conformity, SOM15, Rev. A'
                ],
                'disabled'=>($this->forView ? true : false),
                'choice_attr'=>function($choice, $key, $value){
                    return ['required'=>true];
                },
                'invalid_message'=>'All Of The Packaging List Checkboxes Are Required'
            ]);

这里的全部要点是,我现在可以将表单字段复制为复选框数组,但是似乎无法应用相同的html模板。

0 个答案:

没有答案