uprava persistentniho parametru a nekonecna smycka
- Qwert
- Člen | 19
ahoj vespolek,
narazil jsem na z meho pohledu podivnou funkcionalitu pri pouziti persistentniho parametru v presenteru. Nize pripojuji zjednoduseny priklad. Jde mi o to, ze mam persistentni parametr s datumem a v pripade ze dojde k nejake udalosti, chci tento datum zvysit o tyden. Prijde mi zvlastni, ze pokud parametr neni deklarovan jako persistentni, tak toto funguje, v opacnem pripade to ale klekne na nekonecne smycce…
Zil jsem v domneni, ze funkce persistentnich parametru je v tom, ze se generuji do odkazu – cimz se getem prenaseji dale, tohle zrejme pokud neni bug, je nejaka funkcionalita, jiz nerozumim, muze mi to nekdo vysvetlit? Pripadne odkazat? Diky predem.
I.
<?php
final class CalendarPresenter extends BasePresenter
{
/** @persistent */
public $datefrom_string;
public function actionDefault()
{
$date = new DateTime($this->datefrom_string);
$date->modify('+1 week');
$this->datefrom_string = $date->format('Y-m-d');
}
}
?>
- zatomik
- Člen | 19
Tak jsem si to zkoušel a vše mi fungovalo vpořádku, žádná smyčka se tam neobjevila a datum se o týden přičítal při každém volání.
Podle názvu tvé metody (action) soudím, že dost možná někde dále v kódu přesměrováváš? Nevytváří ti spíš nějakou smyčku špatné(zacyklené) přesměrování?
- Majkl578
- Moderator | 1364
Mezi fází zpracování akcí a signálů dochází k tzv. kanonizaci URL
což je proces, při kterém se sestaví URL a porovná s aktuální. Při
neshodě se přesměruje na aktuálně sestavenou. Slouží to k zajištění
unikátnosti stránky vůči URL, která směřuje na totéž místo.
Tím, že v akci měníš hodnotu persistentního parametru, se dostáváš do
této situace.
- Qwert
- Člen | 19
Majkl578 napsal(a):
Mezi fází zpracování akcí a signálů dochází k tzv. kanonizaci URL což je proces, při kterém se sestaví URL a porovná s aktuální. Při neshodě se přesměruje na aktuálně sestavenou. Slouží to k zajištění unikátnosti stránky vůči URL, která směřuje na totéž místo.
Tím, že v akci měníš hodnotu persistentního parametru, se dostáváš do této situace.
Aha, super, tim to tedy je. Takze persistentni parametry v akci nikdy nemenit?
Editoval Qwert (9. 11. 2011 23:36)