Přenášení bloků v šabloně
- Pan Dobrman
- Člen | 45
Dobrý den, udělal jsem si šablonu, která přes rekurzi vypíše strom a kterou includuji na více místech v aplikaci. Zjistil jsem ale, že bych potřeboval přidat tlačítko na smazaní položky, které bude jen v jednom stromu v aplikaci. Je možné přenášet bloky přes makro include, nebo existuje nějaký jiný způsob? Děkuji
Šablona
{var $tree}
{var $actions}
{block #tree}
{foreach $tree as $item => $parents}
<li>
{$item}
<span align="right">{$actions}</span>
</li>
{if $parents != null}
<ul>
{include #this, tree => $parents}
</ul>
{/if}
{/foreach}
{/block}
Strom
{block #actions}
<a href="delete!"><img src="delete.png" /></a>
{/block}
{include '../templates/Tree.latte', tree => $tree, actions => #actions}
Editoval Pan Dobrman (30. 7. 2012 22:02)
- Aearsis
- Člen | 57
Můžeš udělat tohle:
Šablona
{var $tree}
{var $actions}
{block #tree}
{foreach $tree as $item => $parents}
<li>
{$item}
{block #actions}{/block}
</li>
{if $parents != null}
<ul>
{include #this, tree => $parents}
</ul>
{/if}
{/foreach}
{/block}
Strom
{block #actions}
<span align="right"><a href="delete!"><img src="delete.png" /></a></span>
{/block}
{include '../templates/Tree.latte', tree => $tree}
- Pan Dobrman
- Člen | 45
Děkuji, ale toto mi bohužel nefunguje. Blok se vykreslí, bohužel jen jednou a mimo strom.
- Vojtěch Dobeš
- Gold Partner | 1316
Úplně nechápu, co je která šablona (co je Tree.latte
?),
každopádně blok lze definovat i pomocí makra {define}
(se
stejnou syntaxí jako {block}
), které ho ale v místě definice
nevykreslí.
- Pan Dobrman
- Člen | 45
Děkuji, vše už funguje jak má. Měl bych ale ještě jeden dotaz – je možné získat hodnotu proměnné $item z šablony Tree.latte do jiné šablony? Zkoušel jsem použít makro define, ale dostávám chybu „Undefined variable: item“. Jde mi o to, že chci v bloku actions v signálech používat proměnnou $item.
Tree.latte
{var $tree}
{var $actions}
{block #tree}
{foreach $tree as $item => $parents}
<li>
{$item}
{define #item}{$item}{/define} //Undefined variable: item
{block #actions}{/block}
</li>
{if $parents != null}
<ul>
{include #this, tree => $parents}
</ul>
{/if}
{/foreach}
{/block}
Menu.latte
{define #actions}
{include #item}
{/define}
{include ‚../templates/Tree.latte‘, tree ⇒ $tree}
- Pan Dobrman
- Člen | 45
Děkuji, vše už funguje jak má. Měl bych ale ještě jeden dotaz – je možné získat hodnotu proměnné $item z šablony Tree.latte a použít jí v jiné šabloně? Zkoušel jsem použít makro define, ale dostávám chybu „Undefined variable: item“. Jde mi o to, že chci v bloku actions v signálech používat proměnnou $item.
Tree.latte
{var $tree}
{var $actions}
{block #tree}
{foreach $tree as $item => $parents}
<li>
{$item}
{define #item}{$item}{/define} //Undefined variable: item
{block #actions}{/block}
</li>
{if $parents != null}
<ul>
{include #this, tree => $parents}
</ul>
{/if}
{/foreach}
{/block}
Menu.latte
{define #actions}
{include #item}
{/define}
{include '../templates/Tree.latte', tree => $tree}