snippety v novém šablonovacím jazyce

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

ahoj…
nezkoušel někdo snippety přes <div n:snippet="..."></div>?
Zkoušel jsem to takto:

<?php
<div n:foreach="$tree as $val">
    <div n:snippet="$val['id']">{$val['jmeno']}</div>
</div>
?>

a to vyhodí chybu parsování syntax error, unexpected ‚}‘ na řádce 15:

<?php
Line  8:
Line  9:    if (isset($presenter, $control) && $presenter->isAjax()) { LatteMacros::renderSnippets($control, $_cb, get_defined_vars()); }
Line 10:
Line 11:    if (SnippetHelper::$outputAllowed) {
Line 12:    foreach ($iterator = $_cb->its[] = new SmartCachingIterator($tree) as $val): ?>
Line 13:    <div>
Line 14:    <?php } if ($_cb->foo = SnippetHelper::create($control, $val['id'])) { $_cb->snippets[] = $_cb->foo ?>
Line 15:        <div>aa</div>
Line 16:    <?php array_pop($_cb->snippets)->finish(); } if (SnippetHelper::$outputAllowed) { ?>
Line 17:    </div>
Line 18:    <?php endforeach; array_pop($_cb->its); $iterator = end($_cb->its) ?>
Line 19:
Line 20:    <?php } foreach ($iterator = $_cb->its[] = new SmartCachingIterator($tree) as $val): if (SnippetHelper::$outputAllowed) { } if ($_cb->foo = SnippetHelper::create($control, $val['id'])) { $_cb->snippets[] = $_cb->foo ?>
Line 21:        a
Line 22:    <?php array_pop($_cb->snippets)->finish(); } if (SnippetHelper::$outputAllowed) { } endforeach; array_pop($_cb->its); $iterator = end($_cb->its) ;if (SnippetHelper::$outputAllowed) {
?>

pokud to napíšu po staru nebo dám snippet mimo blok foreach, tak to projde:

<?php
@{foreach $tree as $val}
    {snippet $val['id']}
	{$val['jmeno']}
    {/snippet}
@{/foreach}
?>

možná to dělají @, ale nepřišel jsem na to, kam je nasekat :(

Mikulas Dite
Člen | 756
+
0
-

Tak minimálně ta proměnná musí být označená, ty jí tam dáváš jako string. Možná funguje

<div n:snippet="{$val['id']}">{$val['jmeno']}</div>

ale spíš ne. Pravděpodobně pro takhle dynamické snippety tyhle zkratky nebudeš moct využít.

Rampa
Člen | 65
+
0
-

to si myslím, že nevadí. Ve foreach se taky nemusí proměná dávat do kudrnatých závorek. To si makro přebere samo.
Nicméně jsem to vyzkoušel a nezabralo…