2014年03月30日

[CakePHP2.x] フォームのセレクトボックスで複数選択やグループ作成する

セレクトボックスには、色々なパターンがあるので、簡単に調べたことを記載する。

単一選択のセレクトボックス

複数の選択肢から1つを選ぶセレクトボックス。
配列の1番目が値で、2番目が表示される文字列。

$list = array('1' => 'abc, '2' => 'efg', '3' => 'hij');
$form->input('hogehoge', array(
  'type' => 'select',
  'options' => $list
));

実行結果:

単一のセレクトボックス実行結果

複数選択可能なセレクトボックス

shift押しながら選択すると、複数選択できるセレクトボックス。
'multiple' => trueを指定すると出来る。

$list = array('1' => 'abc, '2' => 'efg', '3' => 'hij');
$form->input('hogehoge', array(
  'type' => 'select',
  'options' => $list
));

実行結果:

複数選択可能なセレクトボックス実行結果

グループ化したセレクトボックス

グループ化したセレクトボックスは、配列を2次元配列にうすると可能になる。

$selectValue = array('group1' =>array('1'=>'abc', '2'=>'def', '3'=>'ghi'),'group2' => array('4' => 'opq','5' => 'rst'));
$form->input('hogehoge', array(
  'type' => 'select',
  'options' => $list
));

実行結果:

グループ化したセレクトボックス実行結果 

関連記事

ラベル:PHP cakephp フォーム
posted by lute at 14:49| Comment(0) | TrackBack(0) | CakePHP | このブログの読者になる | 更新情報をチェックする

[CakePHP2.x] フォームでセレクトボックスのデフォルト値を変更する

ユーザーに入力してもらうフォームで、セレクトボックスを作ると、デフォルトで選択されるのは配列の一番上になってしまう。
下記例だと、「abc」が選択された状態になっている。

$list = array('1' => 'abc, '2' => 'efg', '3' => 'hij');
$form->input('hogehoge', array(
  'type' => 'select',
  'options' => $list
));

が、ユーザーが前画面で見ていた情報を引き継ぎたいとか何だとか、デフォルト値を変えたいシーンがあると思う。
その時、どうやるかというとselectedで配列の番号を渡す。
以下の例だと、「efg」が選択された状態にデフォルトがなっている。

$list = array('1' => 'abc, '2' => 'efg', '3' => 'hij');
$form->input('hogehoge', array(
  'type' => 'select',
  'options' => $list,
  'selected' => 2
));

関連記事>
ラベル:PHP cakephp フォーム

posted by lute at 12:18| Comment(0) | TrackBack(0) | CakePHP | このブログの読者になる | 更新情報をチェックする

2014年03月29日

[CakePHP2.X] メソッドの可視性

PHP5はクラスを書けるので、publicなメソッドだけではなく、protectedやprivateなメソッドを定義できる。

CakePHPでは、「_」を1つ付けるとprotected、「_」を2つ付けるとprivateメソッドになる。

class hogesController extends Appcontroller{
    // public宣言と同じ
    function publicFunc() {
    }

    // protected宣言と同じ
    function _protectedFunc() {
    }

    // private宣言と同じ
    function __privateFunc() {
    }

}
といいつつ、慣れなくて後で読んでも分かり辛いから、下記のように書いてしまっている。 下記でも動き的には問題ないが、規約に従ったほうが良いとは思う。
class hogesController extends Appcontroller{
    public function publicFunc() {
    }

    protected function _protectedFunc() {
    }

    private function __privateFunc() {
    }
}
ラベル:PHP cakephp
posted by lute at 02:59| Comment(0) | TrackBack(0) | CakePHP | このブログの読者になる | 更新情報をチェックする

2014年03月27日

[CakePHP2.x] クエリ文字列の受け取り方

よくある「http://example.com/foo/var.php?name1=10&name2=20」のようなURLパラメータをCakePHPで受け取る方法。

URLパラメータは、paramsのurlキーに入ってくる。

$this->params['url']

最初に例示したURLだと、以下のようにすれば取得できる。

public function index() {
    $value1 = $this->params['url']['name1']; // 10
    $value2 = $this->params['url']['name2']; // 20
}

他にもCakePHPで値を渡す手段はあるけど、それは関連記事で。

関連記事

  • リダイレクト時の引数[URL]
ラベル:cakephp PHP
posted by lute at 20:51| Comment(0) | TrackBack(0) | CakePHP | このブログの読者になる | 更新情報をチェックする

2014年03月25日

[CakePHP2.x] リダイレクト時の引数

CakePHPのブログチュートリアルに、下記のようにリダイレクトが載っている。
自分の作っているサンプルアプリで、引数を渡したいなと思ったので、やり方を調べてみた。

return $this->redirect(array('action' => 'index'));

このリダイレクト時に引数を渡したい時のやり方。
下記のように、アクション名の後に続ければよい。1つでも複数でも可。

public function add() {
    ・・・省略・・・
    return $this->redirect(array('action' => 'index','引数1','引数2'));
}

受け取る方のメソッドには、以下のように記載しておくと使える。

public function index($id = null, $id2 = null) {
    $this->set('posts', $this->Post->find('all'));
}
ラベル:cakephp PHP
posted by lute at 20:53| Comment(0) | TrackBack(0) | CakePHP | このブログの読者になる | 更新情報をチェックする
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。