* Catalyst フィルインフォーム [#k8775d90]
** 概要 [#ge95d5e8]
典型的にはFormVliadatorと一緒に使う。その場合、基本的な動作は以下のようになる。
- フォーム入力画面を表示し、名前やE-Mailなどの入力を促す
- [送信ボタンが押される]
- 入力値にヴァリデーションエラーがあれば、フォームに入力値を埋めて再度フォーム入力画面を表示する
** 手順 [#s0a88cd0]
以下のようにアプリケーションクラス (lib/Myapp.pm)でモジュールを指定することで自動的にフォームが埋められる。
use Catalyst qw/
FillInForm
FormValidator::Simple
/
ただし、ヴァリデーションエラーがなかった場合は、フォームは埋められない。このような場合でも埋めたい時は以下のようにアクションクラス(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);
};
** ロジック内でフォーム値を指定するには [#re8fe547]
アクションクラスなどで以下のように記述する。
$c->req->parameters->{user_name} = 'YAMADA TARO';