尝试在symfony 2中显示来自单个数据库的多条记录

时间:2011-08-22 10:44:42

标签: doctrine symfony twig

在我正在进行的项目中,我需要在网站上显示5篇最新新闻文章。在Controller中,我编写了以下代码:

      $news = $repository->createQueryBuilder('p')
          ->Where('p.contenttype = :type')
          ->setParameter('type', 'newsarticle')
          ->orderBy('p.lastedit', 'ASC')
          ->getQuery();

      $latestnews = $news->getResult();

由于某些原因,这不起作用,因为我收到错误消息:

  

第34行的“ShoutMainBundle:Default:page.html.twig”中不存在“数组”的项目“url”

然而,当我将getResult();更改为getSingleResult();时,它只会显示一条记录(这是我在使用该代码时所期望的)。

这是我对自己应该做的事情感到不安和困惑的地方。我用谷歌搜索“如何在symfony中显示多个记录”,我还没有找到答案。 (如果答案已经出现,我会提前为此道歉)。在普通的PHP中,我希望做一个foreach循环(无论如何都是类似的)来获得我需要的结果。但我也有一种感觉,要实现我想要的东西,我需要在Twig做一些事情。但我需要做的是我不知道。

非常感谢任何帮助。

由于

修改 以下是用于显示此内容的模板代码:

            <section id="latestnews">
            <h2>Latest News</h2>
            <ul>
                <li><a href="..{{ news.url }}" title="Read {{ news.title }}" />{{ news.title }}</a></li>
            </ul>
        </section>

3 个答案:

答案 0 :(得分:3)

您的代码尝试从变量news中读取内容,并假设此变量包含字段urltitle。如果您的控制器返回一个数组,您必须将news作为一个数组并迭代它。

<section id="latestnews">
  <h2>Latest News</h2>
  <ul>
  {% for news in latestnews %}
   <li><a href="..{{ news.url }}" title="Read {{ news.title }}" />{{ news.title }}</a></li>
  {% endfor %}
  </ul>
</section>

答案 1 :(得分:1)

在您的模板中,您正在寻找找不到的对象。它正在寻找数组对象中的url,但它并不存在。我认为你需要检查一下,看看数组中是否存在,然后如果它存在则回显。所以像if(news.url)echo news.url;

显然可能不是那么精确的语法,我并不是所有熟悉树枝的东西,而是类似的东西。

答案 2 :(得分:0)

您需要遍历Twig中的“新闻”结果数组。

{% for n in news %}

    <li><a href="..{{ n.url }}" title="Read {{ n.title }}" />{{ n.title }}</a></li>

{% endfor %}