将Timber :: get_posts与包含

时间:2017-05-29 14:09:42

标签: timber

我有这段代码:

Twig模板:

<div class="content-items-wrapper">
    {% for item in home.latest_posts %}
        {% include "partials/content-item.twig" with item %}
    {% endfor %}
</div>

在我的主题文件中:

$context['home']['latest_posts'] = new Timber::get_posts([
    'posts_per_page' => 6,
]);

使用这些代码时,我会收到以下通知:

  

警告:array_merge():参数#2不是//content/plugins/timber-library/vendor/twig/twig/lib/Twig/Environment.php(462)中的数组:eval()'d code第86行

接着是一个致命的错误:

  

捕获致命错误:传递给Twig_Template :: display()的参数1必须是数组类型,给定null,在/ content / plugins / timber-library / vendor / twig / twig / lib / Twig / Environment中调用。 php(462):第86行的eval()代码,在第401行的//content/plugins/timber-library/vendor/twig/twig/lib/Twig/Template.php中定义

奇怪的是:当我不在Twig模板中使用include时,只是直接使用这个包含的内容,错误就消失了。 也只是在包含的部分中放置一个字符(甚至没有)会产生错误。

同样,当不使用Timber::get_posts()时,只是使用正确的数据填充数组时,我不会收到任何错误。

但显然两者都不是真正想要的解决方案: - )

这可能是什么?

PS:我有一个只有前端的版本(运行gulp-twig),由JSON数据提供,它运行正常。

编辑:修复了示例(复制/粘贴错误)

2 个答案:

答案 0 :(得分:0)

您不需要像home.items一样添加$context['home']$context['home']['latest_posts']这样的上下文{1}}吗?

答案 1 :(得分:0)

问题解决了!

更改 {% include "partials/content-item.twig" with item %}进入{% include "partials/content-item.twig" with { 'item' : item } %}就可以了。