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 | 519
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ů.