Изменить класс CSS группы элементов Symfony Form Type - PullRequest
0 голосов
/ 06 ноября 2019

Кратко : я хочу отредактировать элементы формы родительский класс div. В этом коде не добавляйте и не редактируйте класс css в моем целевом div (который является form-group), а следующий тип формы является элементом другого типа формы.

У меня естьТип формы, подобный следующему:

    public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder->add('id', IntegerType::class, [
        'empty_data' => '',
        'label' => 'ID',
        'attr' => [
            'class' => 'col-sm-3'
        ],
    ]);
    $builder->add('companyName', TextType::class, [
        'empty_data' => '',
        'label' => 'Şirket Adı',
        'attr' => [
            'class' => 'col-sm-3'
        ],
    ]);
}

Таким образом, этот тип формы отображает в этом HTML:

<div class="form-group  field-member_earning_filter"><label class="control-label"> </label>
<div id="form_filters_member" css="col-sm-11">
    <div class="form-group  field-integer"><label class="control-label"
                                                    for="form_filters_member_id">ID</label><input type="number"
                                                                                                  id="form_filters_member_id"
                                                                                                  name="form_filters[member][id]"
                                                                                                  class="form-control col-sm-3">
    </div>
    <div class="form-group  field-text"><label class="control-label" for="form_filters_member_companyName">Ticari
            Ünvan</label><input type="text" id="form_filters_member_companyName"
                                name="form_filters[member][companyName]" class="form-control col-sm-3"></div>

Как вы можете видеть класс CSS, который я хочуadd для каждой группы элементов добавляются в элемент управления формой. Но на самом деле я хочу сделать это:

<div class="form-group col-sm-3 field-integer"><label class="control-label"
                                                    for="form_filters_member_id">ID</label><input type="number"
                                                                                                  id="form_filters_member_id"
                                                                                                  name="form_filters[member][id]"
                                                                                                  class="form-control">

Я пытался реорганизовать этот вызов на слое вида (на стороне ветки), но на самом деле не было никакого реального блока для редактирования этого раздела «группа форм». Кроме того, это тип формы в другом типе формы, поэтому блок не влияет на мой код. Я имею в виду это:

    {% block form_row %}
        <div class="form-group col-sm-3"> <--! but this form group actually my form type's form group -->
             {{ form_label(field) }}
             {{ form_errors(field) }}
             {{ form_widget(field) }}
        </div>
    {% endblock %}

У вас есть идеи?

1 Ответ

0 голосов
/ 06 ноября 2019

Я нашел решение для моей проблемы. Это немного обходной или хакерский способ, но он решил мою проблему:

public function buildForm(FormBuilderInterface $builder, array $options)
{
  $builder->add('id', IntegerType::class, [
    'empty_data' => '',
    'label' => 'ID',
    'block_prefix' => ' col-sm-3'
]);
  $builder->add('companyName', TextType::class, [
    'empty_data' => '',
    'label' => 'Şirket Adı',
    'block_prefix' => ' col-sm-3'
]);
}

Этот div группы форм влияет только на опции block_. Как вы думаете, block_prefix является префиксом класса, но просто добавляет пробел (), и это решает мою проблему :)

...