CakePHP: ネタ帳
CakePHP 振り返りメモです
Component (コンポーネント)関連
$this->Auth->allow
$this->Auth->allow('*');
は効かなくなりました。
// 全てのアクションを認証不要にする場合 2.3では (2.1から) $this->Auth->allow(); // アクション名を指定する場合はarrayで定義 $this->Auth->allow( array( 'register', 'passwordreset' );
対応可能な言語の取得
CakeRequest::acceptLanguage() // 中身 Array ( [0] => ja [1] => en-us [2] => en )
Model (モデル)関連
バリデーション効かない
モデルファイル名は、先頭大文字にしないとエラーにはならないが処理が実行されない。
(Windows環境では問題は起きないが、Unix環境では発生します)
バリデーションメッセージ
変数を使用する場合は、arrayを使用してsprintf的に使用する。こうすることで翻訳ファイルでひとまとめで定義できる。
https://cakephp.lighthouseapp.com/projects/42648/tickets/1855-validation-messages-enhancement
public $validate = array( 'title' => array( 'rule' => array( 'maxLength', 128), 'message' => array( 'Maximum length is %d characters', 128) ) );
findByでフィールド指定
// 単一フィールド $this->data = $this->Model->findById( 1, 'field1'); // 複数フィールド $this->data = $this->Model->findById( 1, array( 'field1', 'field2'));
findでフィールドがNOT NULL
$this->Model->find( 'all', array( 'conditions' => array( "not" => array( "Model.field" => null)))); // SELECT .... FROM `DBname`.`Models` AS `Model` WHERE NOT (`Model`.`field` IS NULL) $this->Model->find( 'all', array( 'conditions' => array( 'Model.field IS NOT NULL'))); $this->Model->find( 'all', array( 'conditions' => array( 'Model.field !=' => null))); $this->Model->find( 'all', array( 'conditions' => array( 'Model.field <>' => null))); // SELECT .... FROM `DBname`.`Models` AS `Model` WHERE `Model`.`field` IS NOT NULL
Helper (ヘルパー)関連
Unitlities (ユーティリティ)関連
Plugins (プラグイン)関連
Twitter Datasource
Twitter API 1.1
TwitterOAuth - PHPライブラリ
REST API v1.1
パラメータ取得
パス
- FULL_BASE_URL:ドメイン(末尾にスラッシュ無し) http://kwski.net
- $this->request->base:appディレクトリパス (先頭にスラッシュ) /cakephp
- $this->request->webroot:webrootディレクトリパス (先頭・末尾にスラッシュ) /cakephp/
グローバル定数
Global Constants and Functions
バージョン取得
Configure::version();
その他
pr(変数);
ビュー上で自動的に変数がデバッグされます。(コントローラ内で使用します。)
エラーメッセージ:「Cannot modify header information - headers already sent by」の温床になったりもするので、注意が必要
PHPとHTMLの混合部分をまとめてコメントアウトする方法
<?php if(0) { ?> <h3>消える</h3> <?php echo "消える"; ?> <?php } ?>
<?php if(0) { ?>と<?php } ?>で囲まれた部分がコメントアウトされます。