私が持っているすべてのブログのリストを返す twig 拡張機能を作成しました。このリストは、小枝テンプレートでループする配列です。
ここに私の拡張機能があります:
<?php
// src/OSC/BlogBundle/Twig/BlogsListExtension.php
namespace OSC\BlogBundle\Twig;
class BlogsListExtension extends \Twig_Extension
{
public function getFunctions()
{
return array(
'blogsList' => new \Twig_Function_Method($this, array($this, 'blogsList')),
);
}
public function blogsList()
{
$em = $this->getDoctrine()
->getManager();
$repository = $em
->getRepository('OSCBlogBundle:Blog');
$blogs = $repository->findBy(array('visibleState' => true));
usort($blogs, array("\OSC\BlogBundle\Controller\BlogController", "orderBlogByTitle"));
return $blogs;
}
public function getName()
{
return 'osc_BlogsListExtension';
}
}
これが私のservices.ymlに追加したものです
services:
osc_blog.blogsList_extension:
class: OSC\BlogBundle\Twig\BlogsListExtension
tags:
- { name: twig.extension }
私の小枝テンプレートでは、次のことを行いたいです。
<ul>
{% for blog in blogsList()|sort %}
<li><a href="{{ path('osc_blog_homepage', {'blogId': blog.id })}}"><span>{{ blog.title }}</span></a></li>
{% endfor %}
</ul>
次のエラーが表示されます。
テンプレートのコンパイル中に例外がスローされました ("通知: 配列から文字列への変換
最後に、私の質問は、小枝テンプレートでループするために配列を変数に渡すにはどうすればよいですか?