我有一个从控制器渲染到twig文件的变量。我定制了我的表单小部件.. 该变量在块外很好地工作但在块中我有这个错误
CalendarBundle中不存在变量“date_seance”:日历:第55行的add_seance_candidate.html.twig
第55行是if
{{ date_seance }} ( here it works well)
<div class="form-group">
{% form_theme form _self %}
{% block _autoecole_calendarbundle_calendar_start_widget %}
{% set type = type|default('text') %}
<input type="{{ type }}" {{ block('widget_attributes') }} {% if date_seance is not empty %} value="{{ date_seance }}" disabled="disabled" class="form-control" {% endif %} class="form-control" placeholder="Cliquer pour entrer la date du début..." />
{% endblock %}
{{ form_errors(form.start) }}
( here i display the widget start input text after customization )
{{ form_widget(form.start) }}
</div>
this the tutorial in symfony cookbook .. How to Customize an individual Field
答案 0 :(得分:0)
表单主题块具有隔离范围,这意味着它们不会继承父变量,除非明确指定。
在这里,您可能希望将{{ form_widget(form.start) }}
替换为{{ form_widget(form.start, {'date_seance' : date_seance}) }}
,以便将您的变量明确传递给您的小部件。
答案 1 :(得分:0)
我猜可以在范围内创建date_seance变量,这意味着像{%block%} {%nav%} {%for%}这样的标记无法从外部访问此变量,如下所示:
GroupOwner
要使变量在其范围之外可访问,您需要在之前定义它:
{% block A %}
{% set var = 'apple' %}
{{ var }} {# This prints apple #}
{% endblock %}
{% block B %}
{{ var }} {# This doesn't prints anything, since var isn't defined #}
{% endblock %}
在您的情况下,尝试在任何范围之外定义{% set var = 'apple' %}
{% block A %}
{{ var }} {# This prints apple #}
{% endblock %}