我使用此树枝模板关联制作了自定义表单类型:
{% block date_filter_widget %}
{% spaceless %}
<div class="input-daterange input-group js-datepicker">
{{ form_widget(form.fromDate) }}
<span class="input-group-addon">to</span>
{{ form_widget(form.toDate) }}
OVERRIDE THE SUBMIT BLOCK HERE
</div>
{% endspaceless %}
{% endblock %}
我想覆盖此自定义字段/块的提交按钮的模板。
我已经尝试将block submit
放在此块中,但这样一来,任何提交块都会被覆盖(即使它们不是date_filter_widget
)。另一种方法是手动创建提交按钮(并传递属性),但这样我并没有真正覆盖表单的提交按钮(所以我最终会遇到其他问题)。
我还看到了一个解决方案,建议block submit
中的if / else检查小部件前缀是否与我的自定义类型名称匹配,但它看起来有点像黑客,而不是正确的覆盖。
答案 0 :(得分:0)
在该块中,我添加了{{ block('date_submit_widget') }}
然后制作了一个自定义提交块,如:
{%- block date_submit_widget -%}
{%- set type = type|default('submit') -%}
{% set attr = attr|merge({class: (attr.class|default('') ~ ' btn btn-primary')|trim}) %}
<span class="input-group-btn">
<button type="{{ type|default('button') }}" name="{{full_name}}_filter" {{ block('button_attributes') }}>
<span class="glyphicon glyphicon-filter"></span>
</button>
</span>
{%- endblock date_submit_widget -%}
我遗漏的重要部分是<button>
需要一个name
属性,它不应该保留在其他输入字段的相同数组中,否则验证将失败