自定义单个字段symfony2.8

时间:2016-02-09 09:47:44

标签: symfony if-statement twig

我有一个从控制器渲染到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

2 个答案:

答案 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 %}