CakePHP2.x系のデータ入力フォームでマスタの値をセレクトボックスで選択出来るようにしました。
例.User登録ページ
ユーザ登録する際にクラスとタイプを設定したいのですが、クラスマスタとタイプマスタが存在する為、そちらの値をセレクトボックスに表示したい場合を例にします。
1. addページ(データ入力)add.ctp
<h1>Add User</h1>
<?php
echo $this->Form->create('User');
echo $this->Form->input('name');
echo $this->Form->input('class_id', array('label' => 'クラス', 'empty' => 'なし'));
echo $this->Form->input('type_id');
echo $this->Form->end('Save User');
?>
※上記のようにオプションでlabel名や、empty(選択なし)を設定出来ました。
2. UsersController.php
<?php
class UsersController extends AppController {
public $uses = array('Class', 'Type');
public $helpers = array('Html', 'Form');
public $components = array('Flash');
public function add() {
// マスタ設定
$this->set('classes', $this->Class->find('list'));
$this->set('types', $this->Type->find('list'));
if ($this->request->is('user')) {
$this->User->create();
if ($this->User->save($this->request->data)) {
$this->Flash->success(__('user has been saved.'));
return $this->redirect(array('action' => 'index'));
}
$this->Flash->error(__('Unable to add user.'));
}
}
こちらの自主開発で必要だったので調べました。


Pingback: PHPでの検索機能付きデータベース系サイト開発記録 | NormalBlog.net