jak se presmerovat na neco jineho, nez „renderWhatever“?

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

procitam si dokumentaci horem dolem, zprava doleva, zleva do prava.. ale nejak se nemohu dovtipit, zda-li se lze v URL odkazat primo na nejakou „udalost“ a ne na „renderXXX“

uvedu priklad:

  • formular, prihlasovani do systemu
  • po odeslani formulare je uzivatel autentizovan a je dale presmerovan do spravneho presenteru – treba „Uzivatel“
  • v uzivateli vsak rozlisuji na dalsi dve „udalosti“ dle stavu uctu uzivatele…

… po prihlaseni se v presenteru uzivatel potrebuji rozhodnout, jestli uzivateli zobrazim formular pro doplneni udaju v profilu a nebo ho preposlu na nejakou „welcome“ stranku.

nyni to resim tak, ze z „login“ presenteru presmerovavam na „Uzivatel:default“ (tj renderDefault), kde se rozhoduji jestli pujdu do „Uzivatel:Welcome“ nebo „Uzivatel:Profil“

neprijde mi to ale ciste – vzdyt preci zadny „default“ nikdy nikde nerenderuji… takze kdyz tak koukam smutne do te dokumentace – staci moji metodu „renderDefault“ prejmenovat na „actionDefault“? bude odkaz stejny – „Uzivatel:default“?

jasir
Člen | 746
+
0
-

wdolek napsal(a):

procitam si dokumentaci horem dolem, zprava doleva, zleva do prava.. ale nejak se nemohu dovtipit, zda-li se lze v URL odkazat primo na nejakou „udalost“ a ne na „renderXXX“

Odkazuje se na dvojici <presenter><action>

uvedu priklad:

  • formular, prihlasovani do systemu
  • po odeslani formulare je uzivatel autentizovan a je dale presmerovan do spravneho presenteru – treba „Uzivatel“
  • v uzivateli vsak rozlisuji na dalsi dve „udalosti“ dle stavu uctu uzivatele…

Dá se to řešit tak, že máš presenter Uzivatel, kde je actionWelcome.
Tam, na základě podmínky, vybereš správný view (tedy render<view>).

<?php
class UzivatelPresenter extends Presenter {
	public function actionWelcome() {
		if($this->user->jeNutneDoplnit()) {
			$this->setView('profil');
		}
        {

	public function renderWelcome() {
	...
	}

	public function renderProfil() {
	...
	}
}
?>