Php Symfony2-返回数组的细枝函数
我创建了一个小树枝扩展,它返回我所有博客的列表。这个列表是我在我的小树枝模板中循环使用的数组 这是我的分机:Php Symfony2-返回数组的细枝函数,php,symfony,twig,Php,Symfony,Twig,我创建了一个小树枝扩展,它返回我所有博客的列表。这个列表是我在我的小树枝模板中循环使用的数组 这是我的分机: <?php // src/OSC/BlogBundle/Twig/BlogsListExtension.php namespace OSC\BlogBundle\Twig; class BlogsListExtension extends \Twig_Extension { public function getFunctions() { retu
<?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';
}
}
在我的小树枝模板中,我想执行以下操作:
<ul>
{% for blog in blogsList()|sort %}
<li><a href="{{ path('osc_blog_homepage', {'blogId': blog.id })}}"><span>{{ blog.title }}</span></a></li>
{% endfor %}
</ul>
{blogsList()中的blog为%sort%}
{%endfor%}
我得到以下错误:
<ul>
{% for blog in blogsList()|sort %}
<li><a href="{{ path('osc_blog_homepage', {'blogId': blog.id })}}"><span>{{ blog.title }}</span></a></li>
{% endfor %}
</ul>
编译模板期间引发了异常
(“注意:数组到字符串的转换
最后,我的问题是如何将数组传递给变量,以便在细枝模板中循环?这应该发生,因为
blogsList()
返回一个ArrayCollection
,它充当数组,但它不是
根据,您只需执行以下操作:
public function blogsList()
{
// ...
return $blogs->toArray();
}
你做过任何调试吗?
var\u dump($blogs)
的输出是什么?它到底是一个数组吗?还有为什么会有双重排序?首先在php文件中(useort)然后是for语句中的另一个。$blogs是一个数组,它返回所有blog对象。这是整个树枝模板的发布代码?@mattexx不,不是。但这是在停止工作之前唯一发生变化的事情。即使在执行了您建议的操作之后(也清除了缓存)我仍然有同样的错误…为什么它告诉我我想把一个数组转换成一个字符串?很奇怪——一定要处理一个合适的数组,考虑一下然后返回一个你想要的数据的模拟,以查看问题所在。以前,我只是把变量博客传递给每个模板,但是它变得越来越重,代码越来越大。每次都会重复。但是,当通过博客并在其中循环(不使用toArray)时,它起了作用…FYK。