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

cakephp

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
デモ
  • このエントリーをはてなブックマークに追加

関連記事

cakephp

ログローテーション

CakePHP 2.xではbootstrap.php内にあらかじめアプリケーションログの設定が書かれています。2.xで日付ごとにログファイルが切り替わるよう設定してみました。 日ごとにログを切り替え

cakephp

ハッシュ関数の選択とハッシュ化処理

CakePHPでは、ログイン時にはpasswordを自動的にハッシュ化して認証を行ってくれますが、そのパスワードを登録する際は、明示的にハッシュ化する必要があります。 ハッシュ関数の選択 ハッ

cakephp

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

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

cakephp

コントローラ内でバリデーション処理を呼び出す

CakePHPでは、saveメソッドの際にバリデーション処理も自動で行われますが、save処理と切り離してバリデーションを行うこともできます。このときは、save時と若干異なる処理体系になります。

cakephp

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

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

cakephp

selectボックスを実装

今まで、selectボックスのgroupを作成するのにSet::Combineを使用していましたが、意外と簡単にできることに気付いてしまったので、ご紹介。(自分だけ知らなかったことに気付いた と言った

cakephp

Markdown Plugin

「Markdown CakePHP Plugin」は、MarkDown書式をレンダリングしてくれるビューヘルパーです。MarkDownについて勉強しているうちに出会ったので試し打ちです。 ダウンロー

cakephp

Blowfishを使用してハッシュ化する

使用方法 Blowfishを採用してハッシュ化を行う場合、Securityクラスのhashメソッドを呼び出します。第2引数に'blowfish'を指定し、第3引数を指定しないもしくはfalseにしま

cakephp

CakePHP 2.x インストール

現在まで私が商用・非商用にリリースしているCakePHPアプリケーションは全て1.3.xベースで作成しています。 まだまだロードマップ的には大丈夫そうですが、お客さん向けに納品しているアプリケーショ

no image

HttpSocketを使用してリクエスト送信

CakePHPには、Webサービスへのリクエスト送信のためのHttpSocketクラスが用意されています。 HttpSocket get HTTP GETリクエストを発行します。デモ H

Message

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


*

PAGE TOP ↑