FuelPHPでセレクトボックスを表示する

FuelPHPでセレクトボックスを表示する

仕事でFuelPHPを使うようになり、試行錯誤しながらも物を作っていっています。
入力で必要となるセレクトボックスですが、選択する値がDBから取得したものの場合があると思います。

 

今回は、そんな場合のDBおよびPHP、HTMLの記述をまとめてみます。
まずは今回作るものに必要なものを下記に記載していきます。

 

テスト用データベース

CREATE DATABSES `test` DEFAULT CHARACTER SET utf8; 

 

テスト用テーブル

CREATE TABLE `selects` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `value` varchar(128) DEFAULT NULL,
  `delete` int(1) unsigned DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

 

こちらのテスト用のデータベースとテーブルを作成し、テーブルの”id”と”value”をセレクトボックスとしてHTML上に表示します。

では、表示するためのデータも入れておきます。

INSERT INTO selects
  ('value')
VALUES
  ('テスト1'),
  ('テスト2'),
  ('テスト3'),
  ('テスト4'),
  ('テスト5');

 

これで、データベース側の準備は完了です。

 

次にFuelPHP側の設定を行っていきます。
簡単に用意したいので、scaffoldを利用しちゃいます。

php oil r fromdb:scaffold --force selects

 

scaffoldで、controllerとmodelとviewが作成されます。
作成されたmodelに1つ関数を作成します。

app/classes/model/select.php

<?php
use Orm\Model;

class Model_Select extends Model
{
  ...省略

  public static function get_list() {
    $result = array();
    if ($empty) $ret&#91;''&#93; = $empty;

    $query = \DB::select('id', 'value')->from('selects')->where('delete', '<>', 1);
    $query->order_by('id', 'asc');
    $selects = $query->execute()->as_array('id', 'value');
    foreach ($selects as $id => $value) {
      $result[$id] = $value;
    }
    return $result;
  }
}

 

次はcontrollerを少しだけ書き換えます。

app/classes/controller/selects.php

<?php

class Controller_Selects extends Controller_Template
{
  public function action_index() {
    $selects = Model_Select::get_list('選択してください');
    $this->template->set_global('selects', $selects, false);
    $this->template->content = View::forge('selects/index');
  }
}

 

最後にviewファイルを書き換えます。

app/views/selects/index.php

<?php echo Form::select('id', Input::post('id', ''), $selects); ?>

 

これで、http://[server]/selects/indexへアクセスするとセレクトボックスが画面に表示されるかと思われます。
細かい設定などは必要ですが、最低限の出力にはこれらの設定だけで可能です。

 

modelで関数を作るのがいいか・・・controller側で作るのがいいかは人それぞれかもしれませんが、自分的にはmodel側で用意したほうがcontrollerがゴチャゴチャしなくていいのではないかと思います。

phpカテゴリの最新記事