Cakephp selectとoption

Cakephpにおけるselectボックス

カテゴリを選択するセレクトボックスの定義例で、知ってるオプションを一通り設定したバージョンです。

echo $this->Form->create('Model', array('class' => 'custom', 'type'=>'post'));

echo $this->Form->input('category_id', array(
        'type' => 'select',
	'id' => 'select-category',
	'class' => 'large',
	'label' => 'カテゴリを選択',
        'options' => $categoryList,
	'default' => '1',
        'selected' => $cat_id
));

echo $this->Form->end();


form全体にcustomというclassを設定してありますが、これはfoundation4用のものです。selectedオプションを設定しておけば、ブラウザ更新時にその値を選択済みにすることができます。

optionsのリスト

optionsのデータ構造は以下のような感じで渡してあげます。

twitter bootstrap3の場合

実例

select-bootstrap3

bootstrap3のセレクトボックスはあまり見た目が良くなかったりします。データ構造は以下のような感じで渡しています。

array(187) {
  [1]=>
  string(12) "カテゴリ"
  [18]=>
  string(40) "----> 地域情報 旅行、レジャー"
  [25]=>
  string(18) "----> ----> 旅行"
  [26]=>
  string(18) "----> ----> 海外"
  [27]=>
  string(18) "----> ----> 地域"
  [28]=>
  string(27) "----> ----> ----> 北海道"

データの途中だけですが、フラットなデータ構造で渡してあげる必要があります。標準では、optiongroupには対応できないようです。

foundation4の場合

実例

select-foundation4

データ構造は以下のような感じで渡してoptiongroup化することができます。

array(187) {
  [0]=>
  array(1) {
    [0]=>
    array(3) {
      ["id"]=>
      string(4) "opt1"
      ["value"]=>
      int(1)
      ["name"]=>
      string(12) "カテゴリ"
    }
  }
  [1]=>
  array(1) {
    [0]=>
    array(3) {
      ["id"]=>
      string(5) "opt18"
      ["value"]=>
      int(18)
      ["name"]=>
      string(40) "----> 地域情報 旅行、レジャー"
    }
  }

foundation4の場合は、bootstrap3と同じデータ構造で渡しても綺麗にセレクトボックスを表示することができます。

Webエンジニアブログにコメント

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Cakephp selectとoptionの記事にコメントを投稿