validateした後に、「エラーによって表示させる文言を変えたいなぁ」って思ってますた。
でも、やり方がわからなかったわけで…。
ビューで「$html->tagErrorMsg('Hoge/title', '※タイトルを入力してください!')」みたくすればエラーが表示されるのは、いろんなページや参考書を拝見して、できてはいたのす。
※つが、bakeすれば自動的に入りますからね…。
※参考書:
CakePHPガイドブック
※参考書:
Fast CakePHP
▼bakeした時にモデルに記述される内容
var $validate = array(
'title' => VALID_NOT_EMPTY,
);
ただ、上記の例は「タイトルが空の場合」に表示されるエラーであって、例えば「文字数20文字を超えている」場合は別のエラーを表示させたいわけで…。
ソースとにらめっこすること数時間…。
※かなり時間かかりますたね(;´Д`)
モデルに記述した「$this->invalidate('title');」を見てふと思った。
もしかしてモデルの「$this->invalidate('title');」の「title」っていうやつを別にして、ビューで読み込めばいけるんじゃねべか?
以下のようにやってみたところ、うまくいきますた!ヽ(´ー`)ノ
【モデル側】
if($data['Hoge']['title']が20文字を超えているか判別する){
$this->invalidate('title_hoge');
}
【ビュー側(Smarty使用)】
タイトル
{assign_assoc var='Newstitle' value='size=>60'}
{$html->input('News/title', $Newstitle)}
{$html->tagErrorMsg('News/title', '※タイトルを入力してください!')}
{$html->tagErrorMsg('News/title_hoge', '※タイトルは20文字以内にしてください!')}{*ここを追記*}
試してませぬが、おそらくSmartyを使わない場合もいけると思ふす。
【ビュー側(Smarty未使用)】
<div class="required">
<?php echo $form->labelTag('Hoge/title', 'タイトル');?>
<?php echo $html->input('Hoge/title', array('size' => '60'));?>
<?php echo $html->tagErrorMsg('Hoge/title', '※タイトルを入力してください!');?>
<?php echo $html->tagErrorMsg('Hoge/title_hoge', '※タイトルは20文字以内にしてください!'); //ここを追記 ?>
</div>
…もしかしてこれって、基本的なことだったりして(;´Д`)