在我正在进行的项目中,我需要在网站上显示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>
答案 0 :(得分:3)
您的代码尝试从变量news
中读取内容,并假设此变量包含字段url
和title
。如果您的控制器返回一个数组,您必须将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 %}