スキーマ値をバリデーションで使用したい
初めまして。
Cake 1.3.6 + MySQL 5 でちょっとしたサイトを構築しているのですが、テーブルのフィールド幅に基づいてバリデーションを行う必要が出てきました。
例えば入力フォームに氏名欄 (name) があるとして、これに対応するテーブルフィールド name の情報を使用し、
- name 欄の入力データに対しフィールド長に基づくバリデーション、例えば between(1, nameフィールド長)や '/^[a-z0-9-]{1,nameフィールド長}$/' のようなバリデーションを行う
- エラー時には $Model->invalidFields() で返されるエラーメッセージに nameフィールド長を含める
これが実現できれば、テーブルのフィールド長が変更になっても cake コード側は変更せずに済むと考えたのですが、つまずいています。
テーブルフィールドの長さは $Model->schema() で得ることができると分かりましたが、バリデーションデータに schema() メソッドの値を加工して渡す方法およびエラーメッセージにその値を埋め込む方法が分かりません。
何か良い方法がありましたら教えていただけますと助かります。
よろしくお願いいたします。
質問者:cakekato, on 13/6/11
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







動的なバリデーションの生成は英語サイトの方で beforeValidate() コールバックでできるという指摘がありました。このコールバックのことは全く失念していましたが、確かにこの方法で行けそうです。
http://ask.cakephp.org/questions/view/how_to_use_schema_data_in_the_validation
あとは invalidFields() のエラーメッセージに動的に値を埋め込む方法が分かれば解決です。
cakekato - on 14/6/11