2011-08-22 116 views
1

在我正在處理的項目中,我需要在網站上顯示5條最新的新聞報道。在Controller中,我寫了下面的代碼:試圖在symfony 2中顯示單個數據庫中的多條記錄

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

     $latestnews = $news->getResult(); 

這並不是出於某種原因,我得到錯誤信息:

項目「網址」「陣列」不存在於「ShoutMainBundle:默認:page.html.twig」在第34行

然而,當我改變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

請顯示模板代碼。 –

+0

我已經把上面的模板代碼。 – mickburkejnr

回答

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> 
+0

感謝您解釋這個問題我使用過你的代碼,但仍然失敗,但交換了「news」和「最新消息「,並在所有引用的」新聞「中加入」最新「修復了這個問題,現在我的新聞文章也顯示出來了,非常感謝! – mickburkejnr

+0

當然,你需要調整變量名稱 - '{ }'不起作用;) –

+0

哈哈,我現在知道了。非常感謝你 :) – mickburkejnr

1

它看起來像在你的模板,你要找的對象,這不是發現。它正在尋找數組對象中的url,但它不存在。我認爲你需要進行檢查,看看它是否存在於數組中,然後回顯是否存在。所以像if(news.url)echo new.url;

它可能不是那種確切的語法,我不是那麼熟悉小枝,但類似的東西。

+0

這很令人困惑,因爲查詢本身起作用(如使用getSingleRecord()時顯示的那樣,它是在使用getRecord()時發出抱怨 – mickburkejnr

0

您需要遍歷Twig中的「新聞」結果數組。

{% for n in news %} 

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

{% endfor %} 
相關問題