Nette, redirect v komponente

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

Zdravím,
mám problém týkající se redirectu přes komponentu. TO jestli se mám někam redirectnout můžu vyhodnotit v Handle funkci, ktere predam parametr ID dle ktereho potom zjistim zdali redirect. Ale To mi vyhodi chybu: Cannot set HTTP code after HTTP headers have been sent. Pote jsem zkousel redirect v renderu, ale tam to hazi NAbortException, to sem se docetl ze v render fci komponenty se redirectovat nemuze. Ale potom vubec nevim kde jinde bych mohl z komponenty redirectovat na jiny presenter. (PhP5.2)

Dekuji za jakoukoliv konstruktivni odpoved

ali
Člen | 342
+
0
-

Nemuzes vyhodnotit jestli chces presmerovat uz v presenteru?

wallkysek
Člen | 52
+
0
-

Bohužel to nejde, nebo asi by to šlo, ale řešil sem to pomocí komponenty, kvůli tomu že se tam vyskytuje vícekrát. Kdybych to měl nějak popsat tak by se to rovnalo asi „systému práv“ kde někdo může do této „lokace“ jiný do jiné, atd.. takže komponenta slouží vlastně jako složka obsahující složky s jednotlivými lokacemi.

newPOPE
Člen | 648
+
0
-

@wallkysek tu to mas vysvetlene ako sa to ma robit :)

https://doc.nette.org/…s/form-reuse#…

Dolezite na tom je:

  • nepresmerovavat v komponente ale v „presenteri“ za pomoci signalu komponenty
  • componenta zavola sama na sebe signal a na ten pocuva presenter a presmeruje

keby si chcel o tom celom vediet viac tak tu: http://www.slideshare.net/…te-framework

EDIT: aha vidim PHP5.2 :/

Editoval newPOPE (15. 12. 2014 10:51)

wallkysek
Člen | 52
+
0
-

Dá se to použít i s

class nazev extends NControl{

}

?

newPOPE
Člen | 648
+
0
-

No ono by to slo aj na starom Nette a PHP5.2.

  1. ano s NControl by to mohlo ficat
  2. do komponenty treba predat callback($this, 'methoda pre presmerovanie')
  3. a malo by ficat

// je ale mozne ze nebude, je to predsa stare takze si to presne nepamatam

wallkysek
Člen | 52
+
0
-

Tak zkusil jsem to pres ty callbacky, asi takto: V presenteru ke kteremu patri i komponenta jsem si vytvoril fci na redirect, a pak jsem ji predal jako parametr komponente, ktera si ji ulozila do promenne. Potom kdyz jsem potreboval aby se dany callback zavolal, tak jsem ho invoknul $this->callback->invoke(); Bohuzel to ma stejy vysledek jako $this->presenter->redirect(‚kam‘);. Predpokladam ze se to chova naprosto totozne..
Vyhazuje mi to chybu NAbortException (ne nezachytávám ji jinde, co sem pročítal fórko tak se prostě redirectovat pri nahravani komponenty neda). Nebo jsem spatne pouzil ten callback :/

Edit: Nejhorsi na tom je ze mi to na php >= 5.3 funguje bez problemu.

Editoval wallkysek (15. 12. 2014 15:53)