n:href v komponente nebere promennou

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

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&amp;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
+
0
-

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
+
0
-

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
+
0
-

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.