Lze udělat podmíněné makro layout?

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Jiří Nápravník
Člen | 710
+
0
-

Potřebuji udělat podmíněné makro layout. První varianta byla

{if}
	{layout}
{else}
	{layout}
{/if}

to mě seřvalo, že nemůže být layout v jiném makru.

Druhá varianta byla to samé, jen s tím, že si to uložím do proměnné a tu předám do makra layout. To je lepší, ale pořád warning, že musí být layout v hlavičce.

Zkoušel jsem i ternární podmínku uvnitř makra layout, ale to mi tu podmínku udělalo jako string a nefungovalo tedy.

Je nějaká možnost?

Martk
Člen | 661
+
+1
-

Potřebuješ to mít v šabloně? Nemohl bys to nastavit v presenteru?

David Grudl
Nette Core | 8218
+
0
-

Zkus dat podminku, tedy ternarni operator, do toho makra layout.

Jiří Nápravník
Člen | 710
+
0
-

V šabloně je to pro mě lepší, protože do presenteru bych nerad sahal, pokud není nutné, ten presenter totiž obsluhuje více projektů a abych to nemusel uzpůsobovat na více místech.

@DavidGrudl Ternarni operator jsem zkoušel, ale nevhodně se to přetransformovalo

{layout (!$deviceView->isPhoneView()) ? 'detail.latte' : 'detail.phone.latte')}

se v cachované latte šablone v metodě prepare převede na:

$this->parentName = "(!$deviceView->isPhoneView())"? 'detail.latte' : 'detail.phone.latte';