CakePHP: ネタ帳

CakePHP 振り返りメモです

Component (コンポーネント)関連

$this->Auth->allow

$this->Auth->allow('*');

は効かなくなりました。

参考Making actions public

// 全てのアクションを認証不要にする場合 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 } ?>で囲まれた部分がコメントアウトされます。

    PAGE TOP ↑