Router – post parametry, presenter bez template

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

Ahoj, ve svém projektu mám jeden presenter, který přijímá z jiné webové služby post parametry a na základě nich (když projde kontrola tokenu a další…) se sestaví a pošle email.

A mám dotaz – mám tomuto presenteru tvořit routu v routeru (a umí router pracovat s postem), nebo to mám nechat takto (to funguje ale nevím zda to je dobře):

v presenteru mám ve startup metodě přebírání parametrů ($this->getHttpRequest()->getPost(„nazev_postu“)).

Pokud jsou přítomny všechny posty a sedí token, volám přímo ve startupu jinou metodu (nacházející se v tom stejném presenteru, která se postará o zbytek…)

Presenter nemá nic zobrazovat – nemá mít žádnou template – když vše ok, tak na konci se provede redirect, když něco neprojde, tak se vyhodí 404.

Nejraději bych to udělal v routeru pravidlo kde by byly definované post paramtry a volala se správná action metoda, ale právě si nejsem jist, zda to veme i ty posty…

Díky

amik
Člen | 118
+
0
-

Router pracuje pouze s URL, nemůžeš v něm definovat nic pro POST, ten není součástí URL. O POST se obvykle postará nette formulář, ale pokud jde o ten zvláštní případ, že se formulář posílá z úplně jiného webu, není chyba použít ->getPost…
Ale alespoň bych si naroutoval presenter a akci, to samozřejmě lze, např. $router[] = new Route('url-co-vola-vzdaleny-web', 'MujPresenter:zpracujPost'); , volat podobnou obsluhu ve startup() není úplně košer.

Jinak co se týče chyby, pokud něco neprojde, měl bys vracet 500 a ne 404 (nebo si prostě vyhoď/nechyť výjimku, Nette už jí v produkčním prostředí samo zobrazí jako chybu 500).

sKopheK
Člen | 207
+
0
-

Pokud neco neprojde, mel bys vracet 4xx, 500 je vnitrni chyba serveru, viz. http://restpatterns.org/…Status_Codes

n.u.r.v.
Člen | 485
+
0
-

ok, díky…upravím to…