CakePHP 1.3

An Internal Error Has Occurred

何かエラーが出た。config.phpのdebugを0にしていると、 PHPのエラーが表示されずにこのエラーが表示されるっぽい。 debugを2にすると元に戻っていつものcakephpエラーが出ました。ハマりかけたわ・・・。

Controller名とAction名の取得

以下でOK。 $controller = $this->name; $action = $this->action;

find('list)

find('list')は「主キー => 値」の連想配列を取得する。値はモデルクラスで以下のように指定する。 public $displayField = 'username'; 主キーは自動的にid列と紐付くが、 特別な名前にする場合は以下のように指定できる。 public $primaryKey = 'example_i…

最新IDの取得

cakePHPでは最新IDを取得できる便利なメソッドがある。 $latest_id = $this->Model->getLastInsertID(); 便利だ・・・・。

aタグのリンクを無効にする

リンクのためのaタグだけど、 リンクを貼らないことがある。今回は設計ミスのような気がするけど・・・。 cakePHP版も載せとく。 <a href='javascript:void(0);'>無効</a> echo $this->Html->link($t['Task']['details'], array('javascript:void(0);'), array('onclick'=>'showEditView(this)',…

同じViewの使い回し

何度か同じViewを使いまわすことがあった。 今までは素直にViewファイルを作成していたが、 なんか効率悪い・・・。調べると、$this->render()を発見。 まあ、普通こーゆーのあるよね。以下のように使う。 $this->render('/controllers/index'); 引数にはCak…

Controller内でpaginateのsortは使えない

ハマった・・・。Controllerで以下のように「sort」と「direction」を設定しても、 反映されない・・・。 $this->paginate = array('conditions'=>array(), 'fields'=>array(), 'page'=>1, 'limit'=>20, 'sort'=>'created', 'direction'=>'desc', 'recursive…

$form->input()のラベルを非表示にする

$form->input()を使うと、項目名をラベルとして出力してくれる。これを消すには以下のように「'label'=>false」を指定する。 echo $form->input('test_item', array('type'=>'text', 'label'=>false)); 解決。

ModelでOrderを定義する

いちいちfindで指定するのが面倒なので、調べてみた。 以下のように設定すればOK。public $order = array('username'=>'ASC');

Authで独自の認証条件を追加する

論理削除でユーザーを管理する場合に使った。 $this->Auth->userScope=array('deleted'=>0); 上記の例では 「列名deletedが0の時」 という条件が追加される。

トップページの設定

CakePHPのデフォルト設定ではトップページ(ディレクトリ直下のURL)に 設定情報ページ(?)が表示される。これは「/app/views/pages/home.ctp」を作成することで、変更できる。 layoutは「/app/views/layouts/default.ctp」が紐付く。ただ、自分は「/app/views/…

Modelの$displayFieldとfind('list')

Modelに$displayFieldを設定すると、find('list')で取得できる。デフォルトではnameかtitleが設定されるらしい。設定しておいて損はないが、 基本的にテーブルのprimary keyが必要となるケースが多いから あまり使わないかもしれない。

recursive

recursiveとはモデルのアソシエーションの回数を制御するプロパティ。複数のモデル同士をアソシエーションで接続している時、 どのまで取得するのかを制御する。以下はコントローラーで設定する例。 function index(){ $this->Model->recursive= 2; } デフォ…