Sledge::DispatchQuery

最終更新日時:2008-02-05 17:07:32
Sledge

Sledgeでは、Pagesのメソッドごとにトリガを用意する必要がありますが、Sledge::DispatchQueryを使用することにより、トリガ1つで様々なメソッドを呼ぶことが出来るようになります。
つまり、通常.cgiファイルをPagesメソッドごとに用意しますが、Sledge::DispatchQueryを使うと各Pagesに.cgiファイルが1個だけで済むようになります。

バグ?


Sledge::DispatchQueryに適当なリクエスト(例えばactionパラメータでディスパッチ先を変えているとして、actionに適当な文字列を指定とか)を送るとInternal Server Errorになってしまいます。
http://blog.livedoor.jp/asakura_t/archives/cat_24008.htmlを参考に、というかそのまんまパクって以下のように修正。

 sub dispatch_query {
     my($class, $key) = @_;
     $key ||= $Sledge::DispatchQuery::DefaultKey;
     my $sledge = $class->new();
     my $page = $sledge->r->param($key) || "index";
 +    $page = "index" unless $sledge->can("dispatch_".$page);
     $sledge->dispatch($page);
 }


"index"になっている箇所は、必要であれば例外処理を行うようなメソッドに飛ばす方がよいかも。

お問い合わせは 掲示板 にて。