Jak vypsat nadpis + obsah foreache pouze když foreach něco vykreslí
- medhi
- Generous Backer | 255
Mám foreach, u něhož nevím, zda bude mít nějaký výstup:
Pokud nějaký výstup mít bude, potřebuji vypsat:
Pokud ale žádný nebude, nechci vypsat nic.
Jak to udělat? Mohl bych dát foreach
do bloku
define
a ten potom vypsat na základě toho, jestli je blok
prázdný nebo ne, ale chybí mi něco jako {ifNotEmpty blockName}
.
Potom by šlo:
Možná by stačilo, kdyby tak fungovalo pouze {if blockName}
,
které by neprošlo, je-li blok prázdný.
Nebo něco nevidím a jde to udělat nějak jednoduše?
Díky moc
- Kamil Valenta
- Člen | 836
A nestačilo by jen ten foreach obalit do {capture} a pak testovat tu
proměnnou?
–
Nebo samozřejmě připravit ta data už nad šablonou a v šabloně je už
prostě mít. Moc nemám rád větší vyhodnocování až v šabloně…
Editoval Kamil Valenta (17. 2. 2021 23:59)
- David Grudl
- Nette Core | 8258
Vyřešíš to kombinací
{try} <ul> {foreach} <li>black</li> {else} {rollback} {/foreach} </ul>{/try}
- Kamil Valenta
- Člen | 836
David Grudl napsal(a):
Vyřešíš to kombinací
{try} <ul> {foreach} <li>black</li> {else} {rollback} {/foreach} </ul>{/try}
To mu ale bude reagovat jen na ten {skipIf}, ne? Prosté {if}, které tam má, bude {try} považovat za legitimní. Takže i v případě, že se žádný content nevykreslí, else a rollback nenastane, nebo ano?
- David Grudl
- Nette Core | 8258
Ano, jen na skipIf. S těma podmínkama bude opravdu lepší capture. https://fiddle.nette.org/#…
- medhi
- Generous Backer | 255
David Grudl napsal(a):
Ano, jen na skipIf. S těma podmínkama bude opravdu lepší capture. https://fiddle.nette.org/#…
Díky, capture jsem zvažoval, ale nenapadlo mě ho použít takto elegantně.
- medhi
- Generous Backer | 255
Tohle by si ale možná zasloužilo nějakou vlastní syntaxi, aby tam
nestrašilo to trim a nemusela se vymýšlet proměnná. Je to v podstatě to
samé jako ifContent
jenom to nekontroluje vnitřek tagu, ale
vnitřek bloku.
Co třeba:
Přitom blok colors
by mohl jakýkoli blok, definovaný i jinde
než uvnitř ifContent
.