Home > PHP | フレームワーク > CakePHPではまったこと14(1.2のバリデーション)

CakePHPではまったこと14(1.2のバリデーション)

最近寒い。温暖化が足りないんじゃないのか。

CakePHP1.2ではバリデーションの方法が変わったよ!っていう情報が氾濫していたのでどうしたらいいのか、以前のやり方はどうなのかと悩んでいました。
どうやら
‘フィールド’=>array(‘rule’ => array(‘定義済み関数か自分で作った関数’), ‘message’ => ‘エラー時のメッセージ’)
って書くっぽいです。もっと複雑な指定もできるみたいだけど、とりあえず使わないから調べてない。
ただ巷の情報を見ていると「定義済みの関数」にVALID_EMAILに相当しそうな’email’やら、日付をチェックできそうな’date’はあるんですがVALID_NOT_EMPTYとかに相当するものがない。どうするんだ、自分で作るのか、と思っていたらそのままVALID_NOT_EMPTYも使えるっぽい。


var $validate = array(
	'mail' => array('rule' => array('email'), 'message' => '正しいメールドレスを入力してください。'),
	'name' => array('rule' => VALID_NOT_EMPTY, 'message' => '名前を入力してください。'),
	'pass' => array('rule' => VALID_NOT_EMPTY, 'message' => 'パスワードを入力してください。')
);

あと、$html->tagErrorMsg()は$form->error()に変わったよ!ってリファレンスには書いてあるんでそれ使ってみたんだけど、エラーメッセージが2重に表示される。つか、$form->error()いらない。なにも書いてなくても勝手にエラーメッセージが出ちゃう。
モデルの$validateでmessageを省略したら’rule’に関係なく「空ですよ」的なメッセージが表示される。(意味違ったかもしれないけど同一のデフォルトメッセージが出る)
どうしたら勝手なメッセージを止められるんだ。・・・あ、もしかして
‘message’=>”
って空文字列入れておけばいいのか?まあ、今度試してみます。

以上

Comments:4

通りすがり 08-01-23 (水) 11:21

・無駄な div は勘弁してよ
・label も自分で書くよ
・error も別枠で表示するよ

なので、こんな感じで使ってます。
$form->input(‘Model.field’,array(‘div’=>false,’label’=>false,’error’=>false));

コスミー 08-01-24 (木) 0:36

divとかerrorなんていうパラメータあったんですね。
labelとかは私も消したりしています。
私がフレームワークに慣れていないせいもありますが、Cakeは、Cakeのやりすぎる動作を抑制する方法がいまいち分かりにくい気がします。
そういう細かい動作を追っていると結局時間がかかるという・・・。
いったん分かってしまうまでが長い道のりに感じています。
その上、いったん分かっても週末いじるくらいだと忘れちゃう!

tomotomo 09-05-12 (火) 11:56

$form->text(‘Model.field’);
を使えばdivもlabelもerrorも表示しませんよ。
ver.1.2.3.8166で確認しましたが。

コスミー 09-05-13 (水) 1:28

>tomotomoさん
最近触ってないので、勉強になります。
ちょっと見ない間にだいぶバージョン進んでますね~。

Comment Form
Remember personal info

Trackbacks:0

Trackback URL for this entry
http://red-treasure.com/report/wp-trackback.php?p=158
Listed below are links to weblogs that reference
CakePHPではまったこと14(1.2のバリデーション) from コスミー報告書[社外秘]

Home > PHP | フレームワーク > CakePHPではまったこと14(1.2のバリデーション)

Search
Feeds
Meta
 合計:018987
 今日:0126 昨日:0157

Return to page top