Persistentní parametry v odkazech
- raia
- Člen | 25
(Nette 0.9.3, PHP 5.3)
Ahoj,
řeším teď takový podivný problém s persistentními parametry. Jak jsem
pochopil, taky by se měly automaticky předávat do linků v šabloně daného
presenteru.
Moje šablona:
<a href="{link click!}" >Click</a>
Do href se dostane jen ?do=click
Když to změním na
<a href="{link click!, 'round' => $round}" >Click</a>
Do href se dostane jen ?do=click (=to same)
Když to změním na
<a href="{link click!, 'round' => 3}" >Click</a>
Do href se dostane ?round=3&do=click
Persistentni parametr mam definovany takto:
final class Presenter
{
public $round = 0;
public function handleClick($round)
{
$this->round = $this->round + $round;
}
public static function getPersistentParams()
{
return array('round');
}
public function renderDefault()
{
$this->template->round = $this->round;
//$this->invalidateControl('round');
}
Snazim se udelat jakoby „pricitani“, podobne jak je tomu v prikladu
fifteen (ten mi fugnuje).
Nevite, co kde mam spatne prosim?
- Vyki
- Člen | 388
Ten parametr se ti automaticky do URL přidá pokud nemá nastavenu svou
výchozí hodnotu. Je zbytečné předávat hodnotu o které víš, že je
výchozí. Dejme tomu, že bys měl v presenteru persistentní parametr
$js
, který by signalizoval vypnutý nebo zapnutý JS. Ve
výchozím stavu bys měl definici persistentního parametru v presenteru.
<?php
/** @persistent int */
public $js = 1; //zapnutý js
?>
V šabloně bys měl tlačítko, které by ti js vyplo
{link jsoff!}
a v presenteru obslužný signál .
<?php
public function handleJsoff()
{
$this->js = 0;
}
?>
Nyní když nebude $js
nastaveno na výchozí hodnotu, začne se
ti do URL jako parametr přidávat.
Editoval Vyki (12. 7. 2010 14:55)
- Vyki
- Člen | 388
Ta první možnost nedává smysl, ten parametr se ti do URL vloží sám. Pokud chceš jako hodnotu toho parametru vložit třeba číslo, tak si ho ulož jako proměnnou do template.
<?php
/** @persistent int */
public $round = 1;
renderDefault()
{
$this->template->number = 8;
}
?>
{link click!, 'round' => $number}
Editoval Vyki (12. 7. 2010 14:04)