スキーマ値をバリデーションで使用したい

初めまして。

Cake 1.3.6 + MySQL 5 でちょっとしたサイトを構築しているのですが、テーブルのフィールド幅に基づいてバリデーションを行う必要が出てきました。

例えば入力フォームに氏名欄 (name) があるとして、これに対応するテーブルフィールド name の情報を使用し、

  1. name 欄の入力データに対しフィールド長に基づくバリデーション、例えば between(1, nameフィールド長)や '/^[a-z0-9-]{1,nameフィールド長}$/' のようなバリデーションを行う
  2. エラー時には $Model->invalidFields() で返されるエラーメッセージに nameフィールド長を含める

これが実現できれば、テーブルのフィールド長が変更になっても cake コード側は変更せずに済むと考えたのですが、つまずいています。

テーブルフィールドの長さは $Model->schema() で得ることができると分かりましたが、バリデーションデータに schema() メソッドの値を加工して渡す方法およびエラーメッセージにその値を埋め込む方法が分かりません。

何か良い方法がありましたら教えていただけますと助かります。

よろしくお願いいたします。

質問者:cakekato, on 13/6/11

動的なバリデーションの生成は英語サイトの方で beforeValidate() コールバックでできるという指摘がありました。このコールバックのことは全く失念していましたが、確かにこの方法で行けそうです。

http://ask.cakephp.org/questions/view/how_to_use_schema_data_in_the_validation

あとは invalidFields() のエラーメッセージに動的に値を埋め込む方法が分かれば解決です。

cakekato - on 14/6/11

<< comments | comments >>

1 Answer

Sorry, but there are no answers yet.

Your Answer

You can use Creole Wiki Syntax to format your text.

Rating

0

Viewed

1160 times

Last Activity

on 27/9/11