CakePHP2.3.6では、inputタグにhtml5のrequired属性がついてくる。
2015/01/11
CakePHP2.3.6を使っているのですが、Inputフォームを作ると、自動的に「このフィールドを入力して下さい」というメッセージが出るようになっています。
どうやらHTML5の、required属性のようです。
実例を示しますと、こんなの。ブラウザは Chrome を使っております。
まぁ、意外と便利なので、表示されるのは良いのですが、なんでなるのか分からないままってのも気持ち悪いので調べてみました。
生成されるHTMLソースを見ると、こうなっていました。
1 |
<input name="data[Member][name]" size="60" maxlength="255" type="text" id="MemberName" required="required"/> |
required="required"部分が正体っぽいです。
で、この required="required" はどうやって指定するのなといえば、モデルのバリデーション部分などで指定する、
allowEmpty を false にすると、設定されるようです。
以下の例では、
app/Model/Member.php
1 2 3 4 5 6 7 8 9 |
var $validate = array( 'name' => array( array('rule' => 'notEmpty', 'message' => '『氏名』を入力してください。', 'required' => true, 'allowEmpty' => false, ) ) ) |
6行目の 'allowEmpty' => false, で設定されます。
出したくないって場合は、ビューのフォーム作成部分で、 required を false とすると、働かなくなります。
1 2 3 4 5 6 7 8 |
echo $this->Form->input('Member.name', array( 'size' => 60, 'label' => false, 'error' => false, 'div' => false, 'required' => false, ) ); |
テキストだけでなく、テキストエリアにも使えます。
以下のように、あえて true にすると、input type="file" でも使えます。
1 |
echo $this->Form->file('MemberPicture.pic1', array('required' => true)); |
画像を必須条件にしたい場合になど役立ちました。
なかなか便利。
[tgAmazonItemLookup asin="4800001927" related="1"]