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
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
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.