Router – post parametry, presenter bez template
- n.u.r.v.
- Člen | 485
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
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
Pokud neco neprojde, mel bys vracet 4xx, 500 je vnitrni chyba serveru, viz. http://restpatterns.org/…Status_Codes