LoginSignup
3
2

More than 5 years have passed since last update.

[Cakephp]フォームにマスタテーブルから読み込んだリストを表示したい件

Last updated at Posted at 2017-05-18

CakePHPで入力フォームを作るとき、
たとえば都道府県を入れさせるときに普通ならリストボックス作りたいわけで、
で、HTMLファイルにごりごりと

<option value="01">北海道</option>
<option value="02">青森県</option>
<option value="03">岩手県</option>

とか47都道府県書きたくないし、
そもそもDB上じゃ都道府県はマスタ作って
コードで管理してるんだわって時に、

いつもならフレームワーク使わずに
PHPで都道府県マスタテーブルお呼び出しして作ってたんですよ。

CakePHPならどうするんだろうなと思って調べたんだけど
調べ方が悪いのか全然ヒットしなかったのでメモ。

用意するもの

MySQL
- 都道府県テーブル(Prefs)
CakePHP
- ArticlesTable.php
- ArticlesController.php
- index.ctp

書き方

1.ArticlesTable.phpのpublic function initialize()に
 都道府県テーブルを関連付け(belongsTo)してやる。

CakePHP
public function initialize(array $config)
    {
       $this->belongsTo('Prefs', [
            'className' => 'Lists.Prefs',
            'foreignKey' => 'pref_id'
        ]);
    }

2.ArticlesController.phpで都道府県テーブルを取り出す変数をセット。

CakePHP
public function index() {
        $prefs=$this->Articles->Prefs->find();
        $this->set('prefs',$prefs);
    }

3.index.ctpにセレクトボックス生成用のフォームヘルパーを取り付け。

CakePHP
    echo $this->Form->create($article);
    echo $this->Form->label('都道府県','都道府県');
    $selectprefs = array();
    foreach ($prefs as $pref){
        $selectprefs +=array($pref->pref_id => $pref->pref_name);
    }
    echo $this->Form->select('都道府県',$selectprefs);
    echo $this->Form->end();

CakePHPは触り始めたばっかりなんで
まだ生のPHP触ってる方が楽だなーなどと思うこともたびたびありますが
たぶん慣れればこっちの方が楽なんだろうな。
できないことも多々ありそうだけど。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2