forms - Symfony Bootstrap 4 表单布局继承
问题描述
我正在尝试覆盖 bootstrap_4_layout.html.twig 的某些字段,但我发现 radio_widget 块存在一些问题。我需要将 div 元素更改为标签,但是当我覆盖该块时,单选元素在视图中被复制。有问题的 div 是与类custom-control
{% block radio_widget %}
{% set parent_label_class = parent_label_class|default(label_attr.class|default('')) %}
{% if 'radio-custom' in parent_label_class %}
{% set attr = attr|merge({class: (attr.class|default('') ~ ' custom-control-input')|trim}) %}
<div class="custom-control custom-radio{{ 'radio-inline' in parent_label_class ? ' custom-control-inline' }}">
{{ form_label(form, null, { widget: parent() }) }}
</div>
{% else %}
{% set attr = attr|merge({class: (attr.class|default('') ~ ' form-check-input')|trim}) %}
<div class="form-check{{ 'radio-inline' in parent_label_class ? ' form-check-inline' }}">
{{ form_label(form, null, { widget: parent() }) }}
</div>
{% endif %}
{% endblock radio_widget %}
使用控制台分析 dom,我看到创建了两个带有custom-control
类的元素。为什么?
解决方案
我找到了解决方案。我覆盖了块radio_widget并使用标签更改了 div 元素:
{% block radio_widget %}
{% set parent_label_class = parent_label_class|default(label_attr.class|default('')) %}
{% if 'radio-custom' in parent_label_class %}
{% set attr = attr|merge({class: (attr.class|default('') ~ ' custom-control-input')|trim}) %}
<label class="custom-control custom-radio{{ 'radio-inline' in parent_label_class ? ' custom-control-inline' }}">
{{ form_label(form, null, { widget: parent() }) }}
</label>
{% else %}
{% set attr = attr|merge({class: (attr.class|default('') ~ ' form-check-input')|trim}) %}
<div class="form-check{{ 'radio-inline' in parent_label_class ? ' form-check-inline' }}">
{{ form_label(form, null, { widget: parent() }) }}
</div>
{% endif %}
{% endblock radio_widget %}
然后我也覆盖了块checkbox_radio_label。在里面我替换了基本代码:
// ...
{{ widget|raw }}
// ...
和:
{% set attr = attr|merge({class: (attr.class|default('') ~ ' custom-control-input')|trim}) %}
<input type="radio" {{ block('widget_attributes') }}{% if value is defined %} value="{{ value }}"{% endif %}{% if checked %} checked="checked"{% endif %} />
有关引导 4 树枝块的参考,请参阅此链接: https ://github.com/symfony/symfony/blob/master/src/Symfony/Bridge/Twig/Resources/views/Form/bootstrap_4_layout.html.twig
推荐阅读
- react-native - React-native:将元素定位在中心和 flex-end
- javascript - 我向列表元素添加了键,但它仍然向我发送有关唯一键的警告
- r - 绘图函数中的错误(未找到变量匹配)
- php - 我想在从 sql 获取的 json 中插入新值
- c++ - 为什么继承模板类时出现错误
- c# - List to JSON with JsonSerializer.Serializer 返回 null
- java - Spring数据JPA一对多/多对一不在数据库中插入/更新细节
- javascript - 在页面加载时滚动到顶部
- python - 使用多个列表和某些列创建 DataFrame 时出错
- javascript - 导入完整的 aws-sdk 是否有效