フォームコントロール
フォームコントロールの生成
control('フィールド名', [オプション配列]); を使うと完全のフォームコントロールを生成できる。
<?php echo $this->Form->create($user); echo $this->Form->control('username'); echo $this->Form->control('password'); // 'approved' を datetime か timestamp フィールドとみなし、 // 以下は、日・月・年・時・分を生成します echo $this->Form->control('approved'); // 以下は、テキストエリア要素を生成します echo $this->Form->control('quote'); echo $this->Form->button('Add'); echo $this->Form->end(); ?>
これらのコントロールには、必要に応じて囲い込む div 、 label 、コントロールウィジェット、および検証エラーが含まれる。
また、作成されたコントロールの型はモデルの内部で推測され、カラムのデータ型に依存する。
フィールドの命名規則
フィールド名はエンティティの属性と一致させる必要がある。
<?php echo $this->Form->create($article); echo $this->Form->control('title'); echo $this->Form->control('publisher.name'); // 関連するモデルのフォームを生成 ?>
control('publisher.name')
というフィールドを作成した場合、publisher[name]
というname属性になる。
コントロールのオプション
type
フォームのタイプを指定。
<?= $this->Form->control('field', [ 'type' => 'file' ]); ?>
出力結果
<div class="input file"> <label for="field">Field</label> <input type="file" name="field" value="" id="field" /> </div>
label
ラベルの見出しを指定。
<?= $this->Form->control('name', [ 'label' => 'The User Alias' ]); ?>
出力結果
<div class="input"> <label for="name">The User Alias</label> <input name="name" type="text" value="" id="name" /> </div>
error
デフォルトのエラーメッセージ表示を無効にできる。
<?= $this->Form->control('name', ['error' => false]); ?>
フォーム全体の生成
複数のフォームコントロールの作成
controls([フィールド名の配列], [オプション配列]); で複数のフォームを生成できる。
<?= $this->Form->controls([ 'name', 'email' ]); ?>
フォームにオプションを追加する場合。
<?= $this->Form->controls([ 'name' => ['label' => 'カスタムラベル'] ]); ?>
エンティティ全体のフォームコントロールを作成
allControls([フィールド名のオプション配列], [オプション配列]);
<?= $this->Form->allControls(['password' => false]); ?>
'フィールド名' => false
とすると、その属性のフォームの生成が無効になる。