Catalyst::Plugin::FormValidatorとコントローラ
Catalyst::Plugin::FormValidator とコントローラ内の移動で上手くいかないのでなやむ。なぜなら、入力チェックとかで、前のページにfowardとかしちゃうと、2回form()が走る。で、最初のページの入力チェックでこけるケースがある。また、1回目のDFVエラー情報もクリアされちゃう。
現象例
ここにアクセス。
/first/?a=123&b=123
$c->form(required=>[qw(a b)];/second/?a=123&c=asfd
$c->form(required=>[qw(a c)] , constraints=> {c=>qr/^\d$/} );$c->form->invalid ; # c が入ってる。
ここで、cの値は数字のみなので、firstに戻りたい。
$c->dispath('first');
firstのDFVチェックが走る
$c->form(required=>[qw(a b)];$c->form->missing ; #b が入ってる。
$c->form->invalid ; #cが消えて、空になっている。
この結果から、2つ問題があることがわかる。
- firstに戻れない
- cの入力チェックでこけたのに、bのエラーになっている。
とりあえず解決方法として、$c->formを一回しか走らないように規則を設け対応。でも気に食わないなぁ。もっと良いほうほうがないかなあ。
教えて、カタリストモンガー!