/ / Snaha o zobrazenie viacerých záznamov z jednej databázy v symfónii 2 - doktrína, symfónia, vetvička

Pokúšame sa zobraziť viac záznamov z jednej databázy v symfoni 2 - doktrína, symfony, vetvička

V projekte, na ktorom pracujem, musím zobraziť 5 najnovších článkov na stránke. V kontroléri som napísal nasledujúci kód:

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

$latestnews = $news->getResult();

Toto nefunguje z nejakého dôvodu, pretože sa zobrazuje chybové hlásenie:

Položka "url" pre "Array" neexistuje v "ShoutMainBundle: Default: page.html.twig" na riadku 34

Keď však zmením getResult(); na getSingleResult(); funguje, ale zobrazí iba jeden záznam (čo je to, čo očakávam pri použití tohto kódu).

To je miesto, kde som sa stratil a zmätenýČo som mal robiť. Som googled ", ako zobraziť viac záznamov v symfony" a ja som "t našiel odpoveď. (Ak bola odpoveď vonku, vopred sa za to ospravedlňujem). V normálnom PHP by som očakával, že urobím foreach slučku (niečo podobné aj tak), aby som získal výsledky, ktoré potrebujem. Ale mám tiež pocit, že na dosiahnutie toho, čo chcem, musím niečo urobiť v Twig. Ale čo musím urobiť, neviem.

Akákoľvek pomoc s týmto by sa veľmi ocenila.

Vďaka

edit: Tu je kód šablóny, ktorý sa používa na zobrazenie tohto:

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

odpovede:

3 pre odpoveď č. 1

Váš kód sa pokúša čítať z premennej newsa predpokladá, že táto premenná má polia url a title, Ak váš regulátor vráti pole, musíte šliapať news ako pole a iterovať nad ním.

<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 pre odpoveď č. 2

Vyzerá to vo vašej šablóne, hľadátepre objekt, ktorý nie je nájdený. ​​Hľadá adresu URL v objekte poľa, ale neexistuje. Myslím si, že je potrebné vložiť kontrolu, aby ste zistili, či existuje v poli, a potom echo tak niečo ako if (news.url) echo news.url;

Pravdepodobne to nemusí byť taká presná syntax, "nie som všetko, čo je známe s vetvičkou, ale niečo podobné."


0 pre odpoveď č. 3

Musíte sa pretočiť cez "news" výsledky poľa v Twig.

{% for n in news %}

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

{% endfor %}