RedirectingException
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Martin Mates
- Člen | 179
Hraju si s jednou funkcí, která zpracovává uložení obrázku přes formulář. Když to zkusím celé dát do try bloku, tak to pokaždé zachytí vyjímku RedirectingException. Když dám ten try/catch blok pryč, tak vše funguje jako po másle. Obrázek se uloží a přesměrování se provede. Nevíte někdo, co to může způsobovat?
<?php
public function uploadSubmitted(Form $form) {
try {
$img = $form['fotka']->getValue()->getImage();
...
$img->save(WWW_DIR . '/uploaded/' . ... . $user . '.jpg');
$this->redirect('uploadOk');
} catch(Exception $e) {
Debug::dump($e);
}
}
?>
Vyjímka:
object(RedirectingException) (6) {
"message" protected => string(64) "http://127.0.0.1/.../upload/upload-ok/?city=chrudim&x=1&y=2"
"string" private => string(0) ""
"code" protected => int(303)
"file" protected => string(71) "F:\Program Files\wamp\www\...\libs\Nette\Application\Presenter.php"
"line" protected => int(691)
"trace" private => array(13) {
0 => array(6) {
"file" => string(80) "F:\Program Files\wamp\www\...\libs\Nette\Application\PresenterComponent.php"
"line" => int(345)
"function" => string(11) "redirectUri"
"class" => string(9) "Presenter"
"type" => string(2) "->"
"args" => array(2) {
...
}
- Martin Mates
- Člen | 179
redhead napsal(a):
metoda redirect vyhazuje tuto výjimku úmyslně. Řešením je dát redirect pryč z try blocku (za něj) a nepoužívat catch (Exception $e), ale nějakou konkretní exception.
Díky díky. Ptal jsem se spíš pro zajímavost, jestli nedělám někde chybu.
- David Grudl
- Nette Core | 8228
Nebo lze všechny AbortException (RedirectingException je jeden z několika potomků) znovuvyhodit.
try {
$img = $form['fotka']->getValue()->getImage();
...
$img->save(WWW_DIR . '/uploaded/' . ... . $user . '.jpg');
$this->redirect('uploadOk');
} catch(AbortException $e) {
throw $e;
} catch(Exception $e) {
Debug::dump($e);
}