
jguenther at gmail
Dec 1, 2005, 3:04 PM
Post #1 of 11
(1176 views)
Permalink
|
I'm trying to set up an application on Catalyst and am having some trouble figuring out how the action handling system works. I have a method in my base class called `display_menu() : Path('')', which I take it would handle the empty path (i.e. a GET of ""). This method calls $c->detach('/menu'), which displays the menu. This way, a user can get the menu by requestiong '/' or '/menu'. This is what shows up in the debug output: .--------------------------------------+---------------------------------------. | Path | Private | +--------------------------------------+---------------------------------------+ | /admin | /admin/display_menu | | /admin/menu | /admin/menu | | /login | /login/login | | /logout | /login/logout | | /menu | /menu | '--------------------------------------+---------------------------------------' Which looks just fine. The problem is, when I actually request '' (or '/' for that matter) it doesn't match the action (or doesn't call it at least) [Thu Dec 1 16:48:59 2005] [catalyst] [debug] ********************************** [Thu Dec 1 16:48:59 2005] [catalyst] [debug] * Request 1 (0.010/s) [12726] [Thu Dec 1 16:48:59 2005] [catalyst] [debug] ********************************** [Thu Dec 1 16:48:59 2005] [catalyst] [debug] "GET" request for "" from " 10.114.18.52" [Thu Dec 1 16:48:59 2005] [catalyst] [debug] Found sessionid "e93efd746fd8396cb82be611d9d47a76" in cookie [Thu Dec 1 16:48:59 2005] [catalyst] [debug] Found session "e93efd746fd8396cb82be611d9d47a76" [Thu Dec 1 16:48:59 2005] [catalyst] [debug] >> ::begin(SaskSAGE, SaskSAGE=HASH(0x8ecdeb8)) [Thu Dec 1 16:48:59 2005] [catalyst] [debug] >> ::auto(SaskSAGE, SaskSAGE=HASH(0x8ecdeb8)) [Thu Dec 1 16:48:59 2005] [catalyst] [debug] >> ::end(SaskSAGE, SaskSAGE=HASH(0x8ecdeb8)) [Thu Dec 1 16:48:59 2005] [catalyst] [debug] No Mason component specified for rendering [Thu Dec 1 16:48:59 2005] [catalyst] [info] Request took 0.045487s (21.984 /s) .------------------------------------------------------------------+-----------. | Action | Time | +------------------------------------------------------------------+-----------+ | /begin | 0.000068s | | /auto | 0.018356s | | -> SaskSAGE::View::Mason->process | 0.000125s | | /end | 0.001321s | '------------------------------------------------------------------+-----------' The lines starting with '>>' are just some tracing debug statements I put in each method so I could see what was happening. As you can see, display_menu() is never called. Yet if I comment that method out, Catalyst calls the default() method, which gives a 404 error (as it should, as this is how I have set up default()): [Thu Dec 1 16:52:14 2005] [catalyst] [debug] ********************************** [Thu Dec 1 16:52:14 2005] [catalyst] [debug] * Request 1 (0.200/s) [12730] [Thu Dec 1 16:52:14 2005] [catalyst] [debug] ********************************** [Thu Dec 1 16:52:14 2005] [catalyst] [debug] "GET" request for "" from " 10.114.18.52" [Thu Dec 1 16:52:14 2005] [catalyst] [debug] Found sessionid "e93efd746fd8396cb82be611d9d47a76" in cookie [Thu Dec 1 16:52:14 2005] [catalyst] [debug] Found session "e93efd746fd8396cb82be611d9d47a76" [Thu Dec 1 16:52:14 2005] [catalyst] [debug] >> ::begin(SaskSAGE, SaskSAGE=HASH(0x8ed1374)) [Thu Dec 1 16:52:14 2005] [catalyst] [debug] >> ::auto(SaskSAGE, SaskSAGE=HASH(0x8ed1374)) [Thu Dec 1 16:52:14 2005] [catalyst] [debug] >> ::default(SaskSAGE, SaskSAGE=HASH(0x8ed1374)) [Thu Dec 1 16:52:14 2005] [catalyst] [debug] >> ::end(SaskSAGE, SaskSAGE=HASH(0x8ed1374)) [Thu Dec 1 16:52:14 2005] [catalyst] [debug] Rendering component "/error/404.phtml" [Thu Dec 1 16:52:14 2005] [catalyst] [info] Request took 0.034335s (29.125 /s) .------------------------------------------------------------------+-----------. | Action | Time | +------------------------------------------------------------------+-----------+ | /begin | 0.000065s | | /auto | 0.010908s | | /default | 0.000096s | | -> SaskSAGE::View::Mason->process | 0.002537s | | /end | 0.003393s | '------------------------------------------------------------------+-----------' Why isn't display_menu() being called when it is set to handle Path('')? I tried doing something similar in a sub-controller (Admin::display_menu : Path('')) and it worked exactly as I expected: doing a GET on "/admin" called Admin::display_menu(), which detached to 'menu' which displayed the admin menu. [Thu Dec 1 16:57:53 2005] [catalyst] [debug] ********************************** [Thu Dec 1 16:57:53 2005] [catalyst] [debug] * Request 2 (0.006/s) [12730] [Thu Dec 1 16:57:53 2005] [catalyst] [debug] ********************************** [Thu Dec 1 16:57:53 2005] [catalyst] [debug] "GET" request for "admin" from "10.114.18.52" [Thu Dec 1 16:57:53 2005] [catalyst] [debug] Found sessionid "e93efd746fd8396cb82be611d9d47a76" in cookie [Thu Dec 1 16:57:53 2005] [catalyst] [debug] Path is "admin" [Thu Dec 1 16:57:53 2005] [catalyst] [debug] Found session "e93efd746fd8396cb82be611d9d47a76" [Thu Dec 1 16:57:53 2005] [catalyst] [debug] >> ::begin(SaskSAGE, SaskSAGE=HASH(0x8f48d1c)) [Thu Dec 1 16:57:53 2005] [catalyst] [debug] >> ::auto(SaskSAGE, SaskSAGE=HASH(0x8f48d1c)) [Thu Dec 1 16:57:53 2005] [catalyst] [debug] >> Admin::auto(SaskSAGE::Controller::Admin=HASH(0x8814bd8), SaskSAGE=HASH(0x8f48d1c)) [Thu Dec 1 16:57:53 2005] [catalyst] [debug] >> Admin::display_menu(SaskSAGE::Controller::Admin=HASH(0x8814bd8), SaskSAGE=HASH(0x8f48d1c)) [Thu Dec 1 16:57:53 2005] [catalyst] [debug] >> Admin::menu(SaskSAGE::Controller::Admin=HASH(0x8814bd8), SaskSAGE=HASH(0x8f48d1c)) [Thu Dec 1 16:57:53 2005] [catalyst] [debug] >> ::end(SaskSAGE, SaskSAGE=HASH(0x8f48d1c)) [Thu Dec 1 16:57:53 2005] [catalyst] [debug] Rendering component "/admin.phtml" [Thu Dec 1 16:57:53 2005] [catalyst] [info] Request took 0.033431s (29.912 /s) .------------------------------------------------------------------+-----------. | Action | Time | +------------------------------------------------------------------+-----------+ | /begin | 0.000063s | | /auto | 0.007670s | | /admin/auto | 0.000085s | | -> /admin/menu | 0.009026s | | /admin/display_menu | 0.009451s | | -> SaskSAGE::View::Mason->process | 0.007321s | | /end | 0.008182s | '------------------------------------------------------------------+-----------' Am I missing something? Any help would be appreciated.
|