redirect fv sfStopException kivételt dob!

3 views
Skip to first unread message

Krisztian Ferenczi

unread,
Dec 14, 2010, 6:48:28 AM12/14/10
to symfo...@googlegroups.com
Egy "érdekes" problémába futottam bele, gondoltam felhívom mások figyelmét is rá. Az egyik action-ben a következő kód volt:

try {
  // hajtsd végre a módosításokat
  $this->redirect('@view?id='.$this->item->getId());
} catch(Exception $e) {
  // állítsd vissza az eredeti állapotot
  // adj hibaüzenetet
}

Én meg nem értettem, hogy miért nem működik a dolog. Nem menti a módosításokat, viszont ha a catch részbe throw $e; -t írok, megtörténnek a módosítások, de nem ír ki semmit! Már azzal is próbálkoztam, hogy print_r-rel kiíratom az $e-t és utána rögtön exit();, de akkor sem történt semmi, azon kívül, hogy megtörtént a módosítás és nem csinálta vissza a dolgokat.
Most nem részletezném a hibakeresés hosszú folyamatát, de a lényeg, hogy a redirect() fv KIVÉTELT DOB! Most így néz ki a végeredmény:

try {
  // hajtsd végre a módosításokat
  $this->redirect('@view?id='.$this->item->getId());
} catch(sfStopException $e) {
  throw $e;
} catch(Exception $e) {
  // állítsd vissza az eredeti állapotot
  // adj hibaüzenetet
}

Így már jó :)

Chris

Gábor Fási

unread,
Dec 14, 2010, 8:50:08 AM12/14/10
to symfo...@googlegroups.com
"The code located after a forward or a redirect in an action is never
executed. You can consider that these calls are equivalent to a return
statement. They throw an sfStopException to stop the execution of the
action; this exception is later caught by symfony and simply ignored."

http://www.symfony-project.org/gentle-introduction/1_4/en/06-Inside-the-Controller-Layer#chapter_06_sub_skipping_to_another_action

2010/12/14 Krisztian Ferenczi <ferenczi....@gmail.com>:

> --
> Azért kapta ezt az üzenetet, mert feliratkozott a Google Csoportok
> szolgáltatásbeli Symfony-hu csoportra.
> Ha üzenetet szeretne küldeni ebbe a csoportba, küldjön egy e-mailt a(z)
> symfo...@googlegroups.com címre.
> Ha le szeretne iratkozni a csoportról, küldjön e-mailt a(z)
> symfony-hu+...@googlegroups.com címre.
> További lehetőségekért keresse fel a csoportot a(z)
> http://groups.google.com/group/symfony-hu?hl=hu címen.
>

Krisztian Ferenczi

unread,
Dec 14, 2010, 8:57:02 AM12/14/10
to symfo...@googlegroups.com
Igen, ezt én olvastam anno, és "tudtam" is, hogy kivételt dob, de nem a redirect-re fókuszáltam, hanem azt hittem, hogy máshol van a hiba, és próbáltam levadászni. Nem sok sikerrel. :D Most már jobban tudatosítottam magamban, hogy try-catch blokkban figyelni kell a redirect-re.

Chris

2010/12/14 Gábor Fási <maer...@gmail.com>
Reply all
Reply to author
Forward
0 new messages