更改 Symfony 表单类型元素的表单组 CSS class
Change Symfony Form Type element's form group CSS class
简要:我想编辑我的表单元素父divclass。在此代码中,不要将 css class 添加或编辑到我的目标 div (这是表单组)并且 跟随表单类型是另一个元素表单类型。
我的表单类型如下:
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 class 已添加到 form-control 元素。但实际上我想这样做:
<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">
我试图在视图层(在树枝侧)重构这个挑战,但实际上没有任何真正的块来编辑 "form group" 部分。此外,它是另一种表单类型中的一种表单类型,因此该块不会影响我的代码。我的意思是:
{% 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 %}
你有什么想法吗?
我找到了解决问题的办法。这有点变通或黑客手段,但解决了我的问题:
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
是 class 的前缀,但只需添加一个空格 (
) 即可解决我的问题:)
简要:我想编辑我的表单元素父divclass。在此代码中,不要将 css class 添加或编辑到我的目标 div (这是表单组)并且 跟随表单类型是另一个元素表单类型。
我的表单类型如下:
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 class 已添加到 form-control 元素。但实际上我想这样做:
<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">
我试图在视图层(在树枝侧)重构这个挑战,但实际上没有任何真正的块来编辑 "form group" 部分。此外,它是另一种表单类型中的一种表单类型,因此该块不会影响我的代码。我的意思是:
{% 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 %}
你有什么想法吗?
我找到了解决问题的办法。这有点变通或黑客手段,但解决了我的问题:
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
是 class 的前缀,但只需添加一个空格 () 即可解决我的问题:)