1

在我正在进行的项目中,我需要在网站上展示 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”中不存在“Array”的项目“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>
4

3 回答 3

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>
于 2011-08-22T11:41:49.030 回答
1

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

显然,它可能不是那种确切的语法,我对 twig 不是很熟悉,但类似的东西。

于 2011-08-22T11:21:18.260 回答
0

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

{% for n in news %}

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

{% endfor %}
于 2011-08-22T11:43:05.503 回答