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
デモ

関連記事

入力文字列の長さ(文字数)をバリデーション

CakePHP 2には、コアバリデーションに文字列の長さを検証する関数が用意されています。 文字列長(コア)バリデーション minLength - 最小文字数以上であること maxLengt

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

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

DebugKitを導入

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

checkボックスを実装

selectボックスに引き続いてcheckボックスの実装方法をおさらいしてみます。 コードは、CakePHP 2と1.3両方で実装可能です。デモ モデルは、こちらも以下 CREATE TA

アップロードファイルのバリデーションルール

CakePHP 2.2や2.3になってファイルアップロードに対するルールがコアバリデーションに追加されているようで、まとめてみました。 コアバリデーション 関連しそうなルールは以下の4つの

日付・時間のバリデーション

日付や時刻に関するバリデーションは以下のルールがビルトインされています。 date 日付 time 時刻 datetime 日時 (m:「月」を数字表記 / M:「月」を英語表記)

no image

radioボタンを実装

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

Js/Cssファイルの読み込みや出力する方法

CakePHPのHTMLヘルパーにはjsファイルやcssファイルを読み込むためのメソッドが用意されています。ファイルを読み込むのに加えて、出力先を複数指定できるようになっています。 また、インライン

テーブルからランダムにデータを取り出す(find)

CakePHPでテーブルから特定件数のレコードをランダムに取得するには以下のように指定するとできます。 $this->data = $this->Bulkdata->find( 'all',

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

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

Message

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

*

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

    S