cakephpの話。
scaffoldを使っているときだと、action名にlistを指定したら、デフォルトだとコントローラーに紐付くテーブル情報一覧が表示される。しかし、自分でリストをカスタマイズして作りたい場合、action名にlistを指定したら、PHP関数のlistを上書きする扱いになるみたいでダメだった。そこで、どうやったらaction名にlistを指定できるのかを研究したので報告。
<?php // コントローラー内で行う class SamplesController extends AppController{ var $scaffold; function beforeFilter(){ // 親クラスのbeforeFilterの呼び出し parent::beforeFilter(); // もしもaction名がlistだったら if($this->action == "list"){ // 自分が呼び出したかったlistの処理をfunction _list()に記述 $this->_list(); $this->render('list'); exit; // exitしないとscaffoldのlistが続けて呼ばれてしまう } } } ?>
これでひとまずOKでした。別にlistというアクション名にこだわらなければ、こんな手間のかかることはしなくてもよいのですが、気になったのでやってしまいました(^^:)