ユーザ用ツール

サイト用ツール


catalyst:plugin

Catalyst::Plugin

プラグインもCPANでがしがしインストール。ただし、きちんとメンテナンスされていないプラグインも多いのであまり依存しすぎると痛い目を見るらしいので要注意。(自分もかなり痛い目をみました…)

プラグインのロード

Catalystに読み込むには、アプリケーションのメイン(?)になるモジュールに追加する。ここではHogeという名前でアプリを作ったので、Hoge.pmファイルを開き…、

use Catalyst qw/-Debug 
       ConfigLoader 
       Static::Simple
       Session
       Session::Store::FastMmap 
       Session::State::Cookie 
    /;

ここに追加していく。モジュール名のCatalyst::Pluginは省略して、その後ろを書く。

プラグイン自作

まずプラグイン自作よりもプラグインを使わない拡張を考慮してください。Pluginは内部動作の変更も可能なため危険です。理由もなくむやみにPluginを追加することは推奨されていません。

Catalyst::Plugin::Hogehogeというモジュールを作り、

package Catalyst::Plugin::Hogehoge;
use strict;
sub hoge {
   $c = shift;
   # 何か処理
}
1;

この自作プラグインをアプリケーションにロード…

use Catalyst qw/-Debug 
       ConfigLoader 
       Static::Simple
       Hogehoge
    /;

コントローラメソッドで…

sub hoge : Local {
   my ($self, $c) = @_;
   $c->hoge();
}

hogeメソッドがCatalystコンテキストに追加されました。

Catalyst::Plugin::FillInForm

FillInFormプラグインは、フォームに値を埋め込んでくれます。Edit画面などで便利

$c->fillform;

$c→req→parametersからデータを取得して埋め込んでくれます。

$c->fillform( \%data_hash );

指定のハッシュデータをフォームに埋め込みます。

fillformメソッドは、テンプレートへforwardした後に呼び出します。

Catalyst::Plugin::FillInForm::ForceUTF8

FillInFormは日本語が通らないっぽい。これを使えばUTF8で使えるようだ。

Catalyst::Plugin::FormValidator::Simple

FormValidator::SimpleプラグインはCatalystでFormValidator::Simpleを使えるようにするプラグイン。

こいつらを入れておくとなお便利

エラーメッセージファイルの指定、

validator:
  profiles: 'profiles.yml'
  messages: 'messages.yml'

mod_perlでは死ぬのでこう書く

validator:
  profiles: __path_to(profiles.yml)__
  messages: __path_to(messages.yml)__

参考、C::P::ConfigLoaderでpath_toを指定する

Catalyst::Plugin::Email::Japanese

http://search.cpan.org/perldoc?Catalyst::Plugin::Email::Japanese

テンプレートツールキットを使ってメール本文を作成し、メール送信する便利なプラグイン。

Catalyst::Plugin::Charsets::Japanese

http://search.cpan.org/perldoc?Catalyst::Plugin::Charsets::Japanese

リクエストパラメータのデコード、レスポンスヘッダのエンコーディング指定を行ってくれる。INがUTF8のとき、リクエストパラメータの全角ハイフンが文字化けする問題がある。これはJcodeで半角カタカナを全角カタカナに変換しているため。すべてUTF8な環境ならCatalyst::Plugin::Unicodeを使った方がいいかも。

catalyst/plugin.txt · 最終更新: 2008/06/06 01:45 by 127.0.0.1