Podmínka v latte souboru nefunguje?

Terka04
Člen | 44
+
-1
-

Ahoj kluci,
řeším pro mě prazvláštní situaci.

Mám e-mailový layout, nazývejme ho „sablona.latte“. Ten importuje pomocí {import} nějaký soubor (importer.latte), který importuje na základě podmínek soubory s komponentami – např. komponenta1.latte, komponenta2.latte, …
Ta sablona.latte pak vykresluje elementy pomocí {include} právě z těch výsledných komponenta1.latte, popřípadě komponenta2.latte. To vše funguje. Ale…

Ten importer má fungovat na základě podmínek, tzn. např.:

{if $a == $b}
	{import 'komponenta1.latte'}
{else}
	{import 'komponenta2.latte'}
{/if}

Ale nefunguje. Ani jedna z komponent se nenačte. Pokud ale zkusím pouze:

{import 'komponenta1.latte'}

Tak se to načte. Pokud ale udělám toto:

{if true}
	{import 'komponenta1.latte'}
{/if}

Tak už zase nic…

{import ($a==$b)?'komponenta1.latte':'komponenta2.latte'}

už zase funguje. Tzn. klasický if nedělá, co by měl.

Samotná podmínka mi žádnou chybu nevyhodí, protože (if true) bude vždy pravda, ale dostanu chybu, že neexistuje block, který se snažím v sablona.latte {include}. Ten blok existuje v obou souborech komponenta1.latte i komponenta2.latte jen s jiným obsahem.

Cílem je importovat soubor jen pokud existuje a pokud ne, tak druhý.

Netušíte někdo, co dělám špatně?

Editoval Terka04 (21. 11. 2022 19:30)

Marek Bartoš
Nette Blogger | 1171
+
+2
-

Nejspíš nefungují importy uvnitř podmínek. Buď by to mělo fungovat nebo tě upozornit, že to nejde. Založ issue :)

m.brecher
Generous Backer | 758
+
0
-

@Terka04 Ahoj, vyzkoušel jsem to jak v v šabloně tak i v layoutu a funguje to.

{if $test}
    {import '../test1.latte'}
{else}
    {import '../test2.latte'}
{/if}

{block content}

	{include test}   // importuje odpovídající soubor podle true/false

	......

{/block}

Takže v Latte asi chyba není, pokud tam není kolize s něčím jiným. Vyzkoušej si to bokem na nějaké testovací šabloně.

Marek Bartoš
Nette Blogger | 1171
+
0
-

@m.brecher záleží taky na verzi Latte. Ve v3 se toho hodně změnilo.