plink this

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

Ahoj chtel jsem se zeptat jestli je mozne vytvorit odkaz v sablone a pritom pouzit uz promenne v url. Priklad:
example.cz/?id=1

a v sablone bych chtel uz jen napsat {plink zkouska ‚name‘=>‚ano‘} a ziskat example.cz/?id=1&name=ano
ale toto bohuzel nejde, preda se jen ‚name‘. Takze jsem se chtel zeptat jestli je mozne pouzit:
{plink this …?} kdy url zustane ale nemuzu se zase odkazat na jiny presenter.

(napadla me jen moznost $_SERVER[‚argv‘] ale to se mi moc nelibi :P)
Predem dik za odpoved

Editoval 14113 (19. 11. 2009 19:58)

Ondřej Mirtes
Člen | 1536
+
0
-

Přesně k tomuto slouží persistentní parametry.

Zápis:

class DefaultPresenter extends BasePresenter {

	public $myParameter = 'defaultValue';

	public static getPersistentParams() {
		return array('myParameter');
	}

}

Pokud budeš v nějakém jiném presenteru a odkazovat na tento Default, použije se v adrese ta defaultní hodnota. Pokud chceš jinou, stačí zapsat:

{plink Default:, 'myParameter' => 'someDifferentValue'}

V rámci toho DefaultPresenteru už pak tu hodnotu nemusíš znovu uvádět, předává se sama.

Je to praktické hlavně pro kategorie zboží v e-shopu, pro předávání aktuálního jazyku aplikace apod.

Ola
Člen | 385
+
0
-

Ve vývojové verzi asi spíš:

<?php
class DefaultPresenter extends BasePresenter
{
	/** @persistent */
        public $myParameter = 'defaultValue';
}
?>

Editoval Ola (19. 11. 2009 20:00)

14113
Člen | 33
+
0
-

Nevim jestli to chapu dobre, ale rekneme ze jsem v example.cz/nevim/1 a odkazu na exemple.cz/dobre/ a tim ze jsem tam nezadal zadnou hodnotu a mam nastaveno jako dafaultni (v presenteru ‚dobre‘) 2 , tak se mi odkaze na exemple.cz/dobre/2 ? je to tak??

Takze jestli to dobre chapu tak to neni to co potrebuju, ja se potrebuju dostat dal a ne zpet.
Tzn.
example.cz?id=1 ⇒ example.cz?id=1&name=joj proste si mapatovat to id

Editoval 14113 (19. 11. 2009 22:29)

Ondřej Mirtes
Člen | 1536
+
0
-

Pokud chceš, aby si systém to ID pamatoval přes všechny Presentery, stačí ten persistentní parametr definovat v BasePresenteru.

Pokud chceš nějaké jiné chování, zkus se víc rozepsat.

14113
Člen | 33
+
0
-

Ne, to mi staci. Velmi dekuji