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

関連記事

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

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

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

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

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

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

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

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

パス定数と変更方法やURLの取得

CakePHPは基本的にはディレクトリそのまま配置することで構築が可能ではありますが、設定パスを変更することでセキュリティに考慮した構成にすることや運用性をもたせたものにすることが可能になります。

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

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

SQLクエリーをログに出力する

SQLのクエリーをデバッグするには、Debug Kitを使用すればできますが、デバッグログと一緒に出したいのでやり方を調査してみました。 別々のログやビューでみるのもいいですが、秒単位で実行される処

Cookieログイン

今回は、ログイン画面でよくみかけるクッキーログインの機能を使ってみます。 CakePHPには、Cookieコンポーネントがあります。(PHPのsetcookieメソッドのラッパー)メソッドはwr

ログローテーション

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

no image

radioボタンを実装

Radioボタンの実装は、セレクトボックスとほぼ同じです。 個人的にはラジオボタンをすすんで使用することは少ないのですが、2択くらいの選択肢であれば非常に便利ですよね。 今回は、その実装方法 デモ

Message

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

*

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

PAGE TOP ↑