Twig运行时错误:无法在字符串变量

时间:2017-02-27 10:58:54

标签: symfony twig

我有以下树枝模板(代码在同一个文件中):

{% macro renderJob(fields) %}
    // renders the job UI block, but I've removed it for simplicity
    Hello world.
{% endmacro %}
{% block _jobs_widget %}
    <div id="jobsContainer">
        {% for fields in form.children %}
            {% dump fields %}
            {{ _self.renderJob(fields) }}
        {% endfor %}
    </div>
{% endblock %}

出于某种原因,升级到twig/twig = v2.1.0后我收到了以下错误:

  

无法在字符串变量(“@ AppBundle / Jobs / form / job.html.twig”)上调用方法(“renderJob”)。

我一直试图找出造成这种情况的原因而没有任何运气。这曾经在1.3.x中正常工作。 fields变量包含正确的数据,但它似乎无法将其传递给renderJob宏,或者找不到宏(这有点奇怪)?

3 个答案:

答案 0 :(得分:10)

您是否尝试过以下操作?

CREATE TABLE [dbo].[Movies] (
[fname] NVARCHAR(50) NULL, 
[lname] NVARCHAR(50) NULL,
[MoviePoster] VARCHAR (50)  NULL,

答案 1 :(得分:3)

不知道为什么它之前有效,但你仍然需要import宏才能使用它:

{% macro renderJob(fields) %}
    // renders the job UI block, but I've removed it for simplicity
    Hello world.
{% endmacro %}

{% import _self as macro %}

{% block _jobs_widget %}
    <div id="jobsContainer">
        {% for fields in form.children %}
            {% dump fields %}
            {{ macro.renderJob(fields) }}
        {% endfor %}
    </div>
{% endblock %}

fiddle

答案 2 :(得分:2)

我认为_self已从twigg 2.0中删除,可能需要在没有<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div id='container'></div>的情况下进行检查。

检查_self而不是{{ renderJob(fields) }}