C::P::FormValidator::Simple::Auto

C::P::FormValidator::Simple::Auto を利用すると、各 action に入る前に YAML で記述された profile を元に Validation を行ってくれる。

初めは、メンテナンス性を考慮し、Profile の重複箇所を共通化するべく、Validation 用の action を定義していたが・・・同僚に
「例え Profile が重複していたとしても、YAML で視認性を向上させる事の方が大切ではないか?」
と指摘され、C::P::FormValidator::Simple::Auto を使い始める事にした。

YAML の ailas を使って重複を防ぐ努力をしてみた

---
xxx/search:
  name:
    - INT
    - &namelength [ LENGTH, 1, 256 ]

xxx/add:
  name:
    - NOT_NULL
    - INT
    - *namelength

これが限界か・・・?
本当は、add 時に NOT_NULL だけ追加したいんですけどねぇ・・・。

FormValidator::Simple::Plugin::DBIC::Unique が使いたい

FormValidator::Simple::Plugin::DBIC::Unique を利用する場合、Model を渡す必要がある為、YAML では書けない。
無理矢理、書けるように拡張しようか否か一考中。

現在は、下記のようにしている。

return if !$c->form->invalid( 'name' );

$c->form(
  name => [
    'DBIC_UNIQUE',
    $c->model( 'DBIC::Users' ),
    'name',
  ],
);

invalid を使って、パラメータ name に関連する問題が無ければ、UNIQUE チェックを行う。