ユーザ用ツール

サイト用ツール


perl:cgi_application_dispatch

CGI::Application::Dispatch

「しーじーあいあぷりけーしょんでぃすぱっち」と一息で言うと、なんか凄いperlプログラマになったようなならないような気がする長い名前のモジュール。

CGI::ApplicationはCGIアプリケーションのコントローラ層を簡単に作成できるようにするモジュール。CGI::Application::Dispatchはコントローラ性能をアップグレードさせるモジュールで、URLパスインフォベースに従ってモジュールに処理を振り分けを可能にする。

CGI::Applicationでは、ビューとしてHTML::Templateを利用できるが別に他のモノでも良い。例えばテンプレツールキットでも良い。テンプレツールキットを使うためのプラグインがある。というか色んなプラグインがあって便利らしい。それは後で調べる。

使い方

CGI::ApplicationとCGI::Application::Dispatchをインスコ、viewをTemplate ToolkitにするためにCGI::Application::Plugin::TTもインストール、当然Template Toolkitも入れる。

トップレベルにcgiを作成

#!/usr/bin/perl -Tw
 
use strict;
use lib qw(../lib);  # モジュール置き場を指定
use CGI::Application::Dispatch;
 
CGI::Application::Dispatch->dispatch(
    prefix => 'Hoge',
    default  => 'Index'
);

処理担当のHogeモジュール群を作成、まず親玉クラス作成

package Hoge::Base;
 
use strict;
use base qq(CGI::Application);
use CGI::Application::Plugin::TT;
 
sub cgiapp_init {
  my $self = shift;
  $self->tt_config(TEMPLATE_OPTIONS =>{INCLUDE_PATH => "../tmpl"});  # ここテンプレートツールキットのテンプレ置き場
}
 
sub cgiapp_prerun {
  my $self = shift;
  $self->header_props(-charset => 'utf-8');
}
 
1;

Hogeの子クラス作成

package Hoge::Index;
 
use strict;
use base qq(Hoge::Base);
 
sub setup {
  my $self = shift;
  $self->start_mode('index');
  $self->run_modes( index => 'do_index', list => 'do_list');
}
 
# /test.cgi/index/indexに対応する処理
sub do_index {
  my $self = shift;
  my $param = {hoge => 'ホゲ', fuga => 'フガ'};
  $self->tt_process('index.tt', $param);
 
}
 
# /test.cgi/index/listに対応する処理
sub do_list {
  my $self = shift;
  my $param = {hoge => 'ホゲ', fuga => 'フガ'};
  $self->tt_process('index.tt', $param);
 
}
1;

テンプレツールキットのテンプレを作ってアクセス。

perl/cgi_application_dispatch.txt · 最終更新: 2007/10/15 11:55 by 127.0.0.1