Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Symfony2-返回数组的细枝函数_Php_Symfony_Twig - Fatal编程技术网

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。