Latte makra {link} a {plink}
- dcepelik
- Člen | 36
Zdravím,
narazil jsem na následující zvláštní chování makra {link}, resp. {plink}. V jedné velmi jednoduché webové aplikaci předávám strukturu navigace (jednorozměrné asociativní pole) jako proměnnou do layoutu:
<?php
$this->template->menuLinks = array(
'O nás' => 'Page:view about-us');
?>
V layoutu se potom generují odkazy následujícím způsobem:
<?php
<ul>
<li n:foreach="$menuLinks as $title => $link">
<a n:href="$link">{$title}</a>
</li>
</ul>
?>
Zde narážím na problém. Pro $link == "Page:view about-us"
skončí generování odkazu chybou.
Příčinou je zřejmě vlastní návrh Latte makra. To obsah atributu n:href zpracuje následujícím způsobem:
- vše až do mezery nebo čárky je
$destination
, - zbytek jsou parametry.
Makro však nevyhodnotí obsah proměnné $link
, ale
proměnnou $link
jako takovou. Sestaví se tedy tento PHP
fragment:
<?php
$presenter->link($link);
?>
Nenašel jsem způsob, jak toto jednoduše a elegantně vyřešit.
Je toto žádoucí chování? Pokud ano, proč? Dost mě to překvapilo, proto bych se rád dobral rozřešení.
Pěkný večer všem
- David Grudl
- Nette Core | 8228
Je to podobné, jako očekávat, že bude fungovat tento kód:
$a = 'foreach ($items';
$a as $val) {
echo $val;
}