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));
Formヘルパー:/lib/Cake/View/Helper/FormHelper.php
Views > Helpers > FormHelper > input
デモ
  • このエントリーをはてなブックマークに追加

関連記事

ログインに追加の条件を付与する「scope」

ユーザ登録では、仮登録処理(status=1)から送付したメール内のリンクをクリックしてもらい本登録(status=0)を行ってもらう実装をしました。仮登録の状態ではログインできないように実装するには

ユーザ登録(仮登録・メール・本登録)

以前1.3版で投稿した「ユーザ登録」処理の2.x版を作成しました。フローは同じで以下のようにします。 1. メールアドレス・パスワードでユーザ登録 2. この時点では仮登録として、本登録用のU

バリデーション前後に処理を追加できる「beforeValidate」「afterValidate」

CakePHPでは、「beforeValidate」「afterValidate」というバリデーション処理の前後で追加の処理を実装できるコールバック関数が用意されています。 beforeVali

CakePHP インストール時エラーの対処

CakePHPインストール時に出くわすであろうエラーの原因と対処方法についてまとめてみました。前提として、WebサーバはApache、データベースはMySQLとしています。 Timezone未設

CSS/JSをひとまとめにして軽量化するプラグイン「Minify plugin for CakePHP」

「Minify plugin for CakePHP」は、インクルードするCSSもしくはJSファイルをひとまとめにしてキャッシュ化してくれるプラグインです。 導入 ダウンロード・解凍し

ネストしたリストを出力「nestedList」

DBやJSONからデータを取得して、そのデータをもとにメニュー表示などネストしたリストを出力させたい場合に「nestedList」が便利です。 ヘルパーに渡すデータは連想配列である必要があります。(

複数ファイルアップロードフォーム

CakePHP 2.0からはHTML5が標準でサポートとなり、複数ファイルアップロードのためのフォーム記述が容易になりました。 View (ビュー) 配列 Array (

FullCalendarを使用してカレンダーアプリケーション

カレンダーアプリケーションを作成するため、カレンダー表示できるプラグインを探索して出会ったFullcalendarを試してみました。シンプルに使用できる上に、オプションがかなり豊富です。ダウンロード

DebugKitを導入

定番のブログチュートリアルをこなして、定番のDebugKitを導入してみました。 2.3からはCakePHPインストール直後に以下のように導入を推奨するような警告メッセージが表示されるようになりまし

(メール・URL・電話・郵便・IP) データ バリデーション

今回は、プロフィール情報に使用されるデータに絞ったバリデーションルールです。 バリデーションルール 以下の5つのバリデーションルールがコアに用意されています。 email メールアドレス

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

    PAGE TOP ↑