【CakePHP3/定数】定数配列をControllerでsetし、templateでセレクトボックスの選択肢として使うやり方
今回は、CakePHP3系で定数配列を使って、templateのセレクトボックスの選択肢として表示する方法を記していきます。
1.やりたい事
const.phpで定義した定数配列をUsersController内でsetし、
template(add.ctp)のセレクトボックスの選択肢を定数配列で表示する。
3.定数ファイルに定数配列の作成
今回は、定数配列を使用するので、定数ファイルに定義しましょう。
都道府県の定数配列を作成します。
※47都道府県定義するのは大変なのでひとまず2つでやっていきます。
const.php <?php return [ // 都道府県 define('HOKKAIDO', 1), // 北海道 define('AOMORI', 2), // 青森 define('PREFECTURES', [ HOKKAIDO => '北海道', AOMORI => '青森', ]), ];
4.ControllerでSetする
次に、作成した定数配列をControllerでsetし、templateで使えるようにしましょう。
今回は、ユーザーの新規作成画面の登録フォームで使うように設定します。
UsersController.php <?php public function add() { 〜 いろんな処理 〜 // 定数配列をセット $this->set('prefectures', PREFECTURES); $this->set('{templateで使う変数名}', {定数配列}); }
5.templateで変数の使用
先ほど、Controllerでsetした変数「prefectures」が使えるようになっているので、
そちらをセレクトボックスの選択肢として使っていきます。
add.ctp <?php echo $this->Form->control('prefecture_id', ['options' => $prefectures, 'empty' => '都道府県を選択してください。']);
6.表示確認
設定は全て完了したので、ブラウザで画面を見て確認して見ましょう。
想定通りの表示がされていますね!
これで、定数配列をセレクトボックスの選択肢として使うやり方は完了です!