cakePHPはDBからデータを取得した後フォームに値を反映させておくためには用意されているフォームヘルパーを使うと便利です。

 

<?php echo $this->Form->control('num'); ?>

 

こうすることでDBから取得したカラム名がnumの値をフォームの中に予め入れてくれます。編集画面を作るときはとても便利です。

ただ、値の中身を見ることで自動でフォームを区別して生成してくれるわけではありません。

選択フォームを生成したい場合、ヘルパーに任意のパラメーターを追加してあげる必要があります。

今回はセレクトフォームで悩んでしまったために記録します。

 

<?php echo $this->Form->control('name名', ['type' => 'select', 'options' => ['val1', 'val2', 'val3']]); ?>

 

第二引数に配列でキーをtypeにしてinputのtypeを指定します。ここにselectといれると、生成されるフォームがselectになります。選択肢はoptionsというキー名にして、さらに配列で選択肢を追加します。

この方法ではDBから取り出したデータを反映させるためのときに使うものですが、DB情報特に必要なく予め選択させたいためだけのセレクトフォームを作る場合は以下の方法でも可能です。

 

<?php
  $options = ['val1', 'val2', 'val3'];
  echo $this->Form->select('type', $options, $setting);
?>

 

第三引数にその他の属性を設定することができます。