FormヘルパーのMagicOption (マジックオプション)

Formヘルパーでは、「フィールド名」,「テーブルカラムのデータ型」もしくはモデルの「バリデーション設定」によりフォーム要素を決定したり、自動で属性を付与する「マジックオプション」と呼ばれるものがあるそうです。
「フィールド名」から
テキストボックスである特定のフィールド名が指定された場合にtype属性が付与されます。これらの属性がつくことでHTML5対応のブラウザバージョンでクライントサイドのバリデーション処理が行われるようになります。
// type="password" // フィールド名が'password’,'passwd'もしくは'psword'のテキストボックス echo $this->Form->input( 'password'); echo $this->Form->input( 'passwd'); echo $this->Form->input( 'psword'); // type="email" // フィールド名が'email’のテキストボックス echo $this->Form->input( 'email'); // type="tel" // フィールド名が'tel’,'telephone'もしくは'phone'のテキストボックス echo $this->Form->input( 'tel'); echo $this->Form->input( 'telephone'); echo $this->Form->input( 'phone');
「Formヘルパーに指定されたoptions」から
Form::inputのオプションを指定する第二引数に特定のoptionsが指定された場合は、強制的に対応するtype属性が指定されます。'options'が指定された場合は'type' => 'select' (参考)が、'cheched'が指定された場合は、'type' => 'checkbox' (参考)が設定されます。
「テーブルカラムのデータ型」から
カラムのデータ型によりフォームの要素を決定してくれます。
(この例では、認識しやすいようにフォームのフィールド名を「カラム型」名と一致させています。特別このフィールド名でないといけないというわけではありません。)
// type="text" echo $this->Form->input( 'char'); // テキストボックス echo $this->Form->input( 'varchar'); // テキストボックス // textarea echo $this->Form->input( 'text'); // テキストエリア // type="checkbox" echo $this->Form->input( 'boolean'); // チェックボックス echo $this->Form->input( 'tinyint'); // チェックボックス echo $this->Form->input( 'date'); // month-day-year echo $this->Form->input( 'datetime'); // month-day-year-hour-min-meridian echo $this->Form->input( 'timestamp'); // month-day-year-hour-min-meridian echo $this->Form->input( 'time'); // hour-min-meridian // type="file" echo $this->Form->input( 'binary'); // ファイルアップロードフォーム 2.5~ // type="hidden" echo $this->Form->input( 'id'); // プライマリキーのカラム 例:id // type="number" 数値入力ボックス echo $this->Form->input( 'integer'); // echo $this->Form->input( 'decimal'); // 小数点最下位ごとにステップ echo $this->Form->input( 'float'); // step="any"
モデルの「バリデーション設定」から
各ルールでは、'allowEmpty'を指定しない場合、デフォルトでは「'allowEmpty' => false」で必須となりrequired属性(required="required")が付与されます。
createやendに以下のように指定すると、この必須属性が自動で追加されるのを無効にすることができます。
echo $this->Form->create( 'Model', array( 'novalidate' => true)); もしくは echo $this->Form->end( 'save', array( 'formnovalidate' => true));
関連記事
-
-
DebugKitを導入
定番のブログチュートリアルをこなして、定番のDebugKitを導入してみました。 2.3からはCakePHPインストール直後に以下のように導入を推奨するような警告メッセージが表示されるようになりまし
-
-
Formヘルパーのinputタグのdiv/labelなどの設定
Formヘルパーのinputではデフォルトでは以下のようにdivで囲われて、labelが付与されて出力されます。 CSSのフレームワークなどであらかじめ決まったスタイルがある場合に便利に作られていま
-
-
Blowfishを使用してハッシュ化する
使用方法 Blowfishを採用してハッシュ化を行う場合、Securityクラスのhashメソッドを呼び出します。第2引数に'blowfish'を指定し、第3引数を指定しないもしくはfalseにしま
-
-
テーブルからランダムにデータを取り出す(find)
CakePHPでテーブルから特定件数のレコードをランダムに取得するには以下のように指定するとできます。 $this->data = $this->Bulkdata->find( 'all',
-
-
多言語サイト向けに翻訳ファイルを使って翻訳を行う
CakePHPには、翻訳をビヘイビアを使用する方法と翻訳ファイルを使用する方法の2つがあるそうです。(他にもあるのかな?) 今回は、翻訳ファイルを使用して言語の切り替えを行い、その言語設定をCook
-
-
(メール・URL・電話・郵便・IP) データ バリデーション
今回は、プロフィール情報に使用されるデータに絞ったバリデーションルールです。 バリデーションルール 以下の5つのバリデーションルールがコアに用意されています。 email メールアドレス
-
-
Js/Cssファイルの読み込みや出力する方法
CakePHPのHTMLヘルパーにはjsファイルやcssファイルを読み込むためのメソッドが用意されています。ファイルを読み込むのに加えて、出力先を複数指定できるようになっています。 また、インライン
-
-
CakePHP インストール時エラーの対処
CakePHPインストール時に出くわすであろうエラーの原因と対処方法についてまとめてみました。前提として、WebサーバはApache、データベースはMySQLとしています。 Timezone未設
-
-
ハッシュ関数の選択とハッシュ化処理
CakePHPでは、ログイン時にはpasswordを自動的にハッシュ化して認証を行ってくれますが、そのパスワードを登録する際は、明示的にハッシュ化する必要があります。 ハッシュ関数の選択 ハッ
-
-
recursive設定によるfind()性能改善
CakePHPでは、モデルにアソシエーションを設定している場合、recursive(=>joinする階層)はデフォルトで0に設定されています。「recursiveゼロ」の意味するところとは、「1跨ぎま