podmíněné zobrazení v šabloně

- adferg
- Člen | 31
Ahoj, rád bych zobrazoval blok s komentáři až na základě toho, jestli nějaké existují. Zkusil jsem
{* Comments *}
{if isset($comments) && !empty($comments)}
<div class="w3-content">
<h2>Komentáře</h2>
<div class="comments">
{foreach $comments as $comment}
<p><b>{$comment->name}</b> napsal:</p>
<div>{$comment->content}</div>
{/foreach}
</div>
</div>
{/if}
Ale v šabloně se nadpis „Komentáře“ zobrazuje, i když pod článkem žádný komentář není. Prosím, nevíte, kde dělám chybu?

- nightfish
- Člen | 528
Tipuju, že v tom $comments totiž není pole, nýbrž objekt
třídy Nette\Database\Table\Selection – takže na něm
empty() celkem pochopitelně vrací false, protože se
jedná o ne-NULLový objekt. A zároveň objekt této třídy implementuje
rozhraní Countable, takže nad ním lze bez problémů zavolat
count() pro ověření počtu prvků.