Nelze odchytit Nette\Application\BadRequestException #404
- zdrhal
- Člen | 42
Zdravím,
už asi 3 dny se mi nedaří odchytit Nette\Application\BadRequestException
#404. Mám verzi NETTE 2.1.1 a absolutně nechápu v čem může být
problém. Přikládám metodu z presenteru, která mě tuto chybu vyhazuje.
Prosím řekněte proč moje řešení nefunguje nebo mě napište rovnou kód,
jak to mám přepsat, aby to fungovalo. Díky!
/** @var int $event */
public function renderAddround($event = 0)
{
try {
// template promenne
$this->template->event = $this->database->findById('events',(int)$event);
if(!$this->template->event || $this->template->event == null || (isset($this->template->event->id_user) && $this->template->event->id_user != $this->user->id))
{
$this->flashMessage('Neplatná událost.');
$this->redirect('default');
}
$this['roundForm']['save']->caption = 'Vložit';
} catch (\Nette\Application\BadRequestException $e) {
$this->flashMessage($e->getMessage(), 'chyba');
$this->redirect('default');
}
}
- zdrhal
- Člen | 42
To já vím text je tento:
**Nette\Application\BadRequestException #404
Invalid value for parameter ‚event‘ in method App\Presenters\DashboardPresenter::renderAddround(), expected integer.**
Docílil jsem ji tím, že do int ideventu (nazvane event) jsem pomoci url poslal string. Jenže se mi to nedari nijak odchytit. :-(
- jiri.pudil
- Nette Blogger | 1034
Jen pro doplnění: ta výjimka ti nejde odchytit, protože se vyhazuje úplně jinde.
- zdrhal
- Člen | 42
Super vyřešeno!
Problém vyřešila rada od MartinitCZ. Díky ti! :-)
Jinak díky i jiri.pudil za radu. Hnedle jsem o něco chytřejší a hlavně spokojenější. Už tu bakalářskou práci můžu v klidu odevzdat a můžu v klidu spát, páč mám ošetřený vstupy. Díky!
Editoval zdrhal (9. 7. 2014 13:32)
- David Kudera
- Člen | 455
Kdyžtak ještě tyhle různá přesměrování by měla být ideálně v action* metodách, které se provedou dřív než render* metody. Je totiž zbytečné nechat nette pracovat např. na tvorbě šablony apod., když je uživatel potom přesměrován. dokumentace.
V action metodě může být celé načtení z db i přesměrování, uložení do privátní proměnné presenteru a v render metodě může být už načtená a ověřená proměnná jen předána šabloně.
- zdrhal
- Člen | 42
Jasně děkuji :-) Tohle mě nenapadlo, že můžu ušetřit nějaký desetinky. Ještě bych se chtěl zeptat, kde se ošetří chyba:
Nette\Application\UI\BadSignalException #403
There is no handler for signal 'nextMon' in class App\Presenters\DashboardPresenter.
To jest, pokud změním v url název handleru, který nemám v presenteru definován.
Např.
z:
moje_vtipna_url&do=nextMonth
na:
moje_vtipna_url&do=aTedToShodim
Editoval zdrhal (9. 7. 2014 14:49)
- David Matějka
- Moderator | 6445
Uzivatel na produkci cervenou obrazovku neuvidi. Od toho je prave error
presenter
Pokud tedy nebudes sikovny jako tady :)
Editoval matej21 (9. 7. 2014 15:09)