Catalyst::Plugin::FillInForm

概要

典型的にはFormVliadatorと一緒に使う。その場合、基本的な動作は以下のようになる。

  • フォーム入力画面を表示し、名前やE-Mailなどの入力を促す
  • [送信ボタンが押される]
  • 入力値にヴァリデーションエラーがあれば、フォームに入力値を埋めて再度フォーム入力画面を表示する

手順

以下のようにアプリケーションクラス (lib/Myapp.pm)でモジュールを指定することで自動的にフォームが埋められる。

 use Catalyst qw/
 FillInForm 
 FormValidator::Simple
 /

手動でセットする場合は、アクションクラスでCatalyst::Requestオブジェクトを以下のようにする。

 $c->req->param('sex','男性') if $c->req->param('sex') eq '';  # 性別の指定がなければ男性にする

ただし、ヴァリデーションエラーがなかった場合は、フォームは埋められない。このような場合でも埋めたい時は以下のようにアクションクラス(lib/Myapp/Controller/Member.pm )のend()に書く。

fillform()が呼ばれる前にHTMLテンプレートがレンダーされてなければならないので、直前にforward()する必要がある。

 sub end : ActionClass('RenderView') {
    my ( $self, $c ) = @_;
    $c->forward('Myapp::View::TT') unless $c->res->output;
    $c->fillform($c->req->params);
 };

ロジック内でフォーム値を指定するには

アクションクラスなどで以下のように記述する。

 $c->req->parameters->{user_name} = 'YAMADA TARO';

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS