CakePHP Formにはない項目はValidateできない??
formヘルパーを使ってフォームを作ってモデルにバリデーションルールを定義しておくと、その項目にエラーがあった場合は該当入力欄のすぐ下にエラーを表示してくれます。とっても便利。
けど、エラーメッセージだけ別の場所に表示したい ということもある。そんなときはまず入力欄のところのエラー表示を次のように消して
$form->input('(フィールド名)',array('error' => false)
エラーメッセージを出したい場所にこのように書けばOKみたい。
$form->error('(フィールド名)');
通常これでよさげなんですが、フォームにないフィールド名を指定すると、たとえdataに入っていたとしても表示はしてくれないみたい。
「入力させてないんだからエラーだけ表示されても・・・」と思うので、通常はそれで問題ないとおもうのですが、たまたま出て欲しい場面というのに出くわしました。
先日「パスワードが勝手に埋まってる〜」というのがあり、それを強引に回避するために入力用の欄を設けて裏っかわで値を移し替えたうえで、本物のフィールドに対してバリデーションルールをチェックしてやろうとしていました。
こういう状況のため、フォームには本来のパスワード欄はなく、あるのは見かけ上の入力欄。エラーメッセージだけ頂戴して前述のような方法で表示しようとしたところ無視。
というか、そもそもバリデーションルールを摘要してくれてないっぽい。
本来の入力欄をhiddenでいれてみると、エラーメッセージを取得でき、バリデーションルールも適用されました。
ん〜〜。。。