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));
関連記事
-
-
多言語サイト向けに翻訳ファイルを使って翻訳を行う
CakePHPには、翻訳をビヘイビアを使用する方法と翻訳ファイルを使用する方法の2つがあるそうです。(他にもあるのかな?) 今回は、翻訳ファイルを使用して言語の切り替えを行い、その言語設定をCook
-
-
checkボックスを実装
selectボックスに引き続いてcheckボックスの実装方法をおさらいしてみます。 コードは、CakePHP 2と1.3両方で実装可能です。デモ モデルは、こちらも以下 CREATE TA
-
-
ハッシュ関数の選択とハッシュ化処理
CakePHPでは、ログイン時にはpasswordを自動的にハッシュ化して認証を行ってくれますが、そのパスワードを登録する際は、明示的にハッシュ化する必要があります。 ハッシュ関数の選択 ハッ
-
-
入力文字列の長さ(文字数)をバリデーション
CakePHP 2には、コアバリデーションに文字列の長さを検証する関数が用意されています。 文字列長(コア)バリデーション minLength - 最小文字数以上であること maxLengt
-
-
CSS/JSをひとまとめにして軽量化するプラグイン「Minify plugin for CakePHP」
「Minify plugin for CakePHP」は、インクルードするCSSもしくはJSファイルをひとまとめにしてキャッシュ化してくれるプラグインです。 導入 ダウンロード・解凍し
-
-
テーブルからランダムにデータを取り出す(find)
CakePHPでテーブルから特定件数のレコードをランダムに取得するには以下のように指定するとできます。 $this->data = $this->Bulkdata->find( 'all',
-
-
Formヘルパーのinputタグのdiv/labelなどの設定
Formヘルパーのinputではデフォルトでは以下のようにdivで囲われて、labelが付与されて出力されます。 CSSのフレームワークなどであらかじめ決まったスタイルがある場合に便利に作られていま
-
-
FullCalendarを使用してカレンダーアプリケーション
カレンダーアプリケーションを作成するため、カレンダー表示できるプラグインを探索して出会ったFullcalendarを試してみました。シンプルに使用できる上に、オプションがかなり豊富です。ダウンロード
-
-
(メール・URL・電話・郵便・IP) データ バリデーション
今回は、プロフィール情報に使用されるデータに絞ったバリデーションルールです。 バリデーションルール 以下の5つのバリデーションルールがコアに用意されています。 email メールアドレス
-
-
ログインに追加の条件を付与する「scope」
ユーザ登録では、仮登録処理(status=1)から送付したメール内のリンクをクリックしてもらい本登録(status=0)を行ってもらう実装をしました。仮登録の状態ではログインできないように実装するには


