n:href v komponente nebere promennou
- F.Vesely
- Člen | 369
Zdravim,
mam problem s vytvorenim odkazu na signal pomoci n:href i {link} v sablone komponenty pro hlasovani.
Sablona vypada takto:
<div class="vote">
{$id}
<a class="up" n:href="up! $id">+</a>
<a class="up" n:href="up! 3">+</a>
</div>
A vygeneruje mi:
<div class="vote">
3
<a class="up" href="/projects/nette/www/?do=vote-up">+</a>
<a class="up" href="/projects/nette/www/?vote-id=3&do=vote-up">+</a>
</div>
Jde mi tedy o to, proc mi v prvnim pripade n:href nevygeneruje to same jako ve druhem pripade, kdyz po vypsani promenne vidim, ze je tam ulozena hodnota 3?
Zkousel jsem s tim psi kusy, ale stale se mi tam tu hodnotu z promenne nedari nacpat, pohoml by mi prosim nekdo?
- Jan Tvrdík
- Nette guru | 2595
Zvláštní, nechceš sem hodit, jak vypadá zkompilovaná šablona (= to co
je v tempu)? Případně
zkus <a class="up" n:href="up! id => $id">+</a>
- F.Vesely
- Člen | 369
Ahoj,
dekuji za odpoved. id ⇒ $id jsem take zkousel a furt to dela to same…
Zkompilovana sablona v tempu vypada:
//netteCache[01]000425a:2:{s:4:"time";s:21:"0.42203800 1395822205";s:9:"callbacks";a:2:{i:0;a:3:{i:0;a:2:{i:0;s:19:"Nette\Caching\Cache";i:1;s:9:"checkFile";}i:1;s:110:"C:\Program Files\EasyPHP-DevServer-13.1VC11\data\localweb\projects\nette\app\components\voteControl.latte";i:2;i:1395822202;}i:1;a:3:{i:0;a:2:{i:0;s:19:"Nette\Caching\Cache";i:1;s:10:"checkConst";}i:1;s:25:"Nette\Framework::REVISION";i:2;s:22:"released on 2014-02-08";}}}?><?php
// source file: C:\Program Files\EasyPHP-DevServer-13.1VC11\data\localweb\projects\nette\app\components\voteControl.latte
?><?php
// prolog Nette\Latte\Macros\CoreMacros
list($_l, $_g) = Nette\Latte\Macros\CoreMacros::initRuntime($template, 'm441imw9t2')
;
// prolog Nette\Latte\Macros\UIMacros
// snippets support
if (!empty($_control->snippetMode)) {
return Nette\Latte\Macros\UIMacros::renderSnippets($_control, $_l, get_defined_vars());
}
//
// main template
//
?>
<div class="vote">
<?php echo Nette\Templating\Helpers::escapeHtml($id, ENT_NOQUOTES) ?>
<a class="up" href="<?php echo htmlSpecialChars($_control->link("up!", array($id))) ?>
">+</a>
<a class="up" href="<?php echo htmlSpecialChars($_control->link("up!", array(3))) ?>
">+</a>
</div>
- F.Vesely
- Člen | 369
Omlouvam se, delal jsem to nekolik hodin v kuse a napad menil jiny napad, takze nakonec jsem se rozhodl, ze do komponenty budu misto celeho radku z databaze predavat pouze id, ale pri volani komponenty uz jsem to nezmenil. Vysledek tedy byl, ze v promenne $id nebyl int, ale byla tam instance Nette\Database\Table\ActiveRow.
Kdybych si misto vypisu te promenne udelal var_dump(), tak bych tu ted nebyl za blbce. :D
Dekuji jeste jednou, problem byl vyresen.