[読書] CakePHP2 定番レシピ119

Webアプリ開発を加速する CakePHP2定番レシピ119

Webアプリ開発を加速する CakePHP2定番レシピ119から、今後使用していきたいものをメモしておきます。

コントローラなどをディレクトリで分ける

bootstrap.php
App::build(array(
    'Controller' => array(
        ROOT. DS .APP_DIR .DS. 'Controller'.DS.'Admin'.DS,
    ),
    'Model' => array(
        ROOT. DS .APP_DIR .DS. 'Model'.DS.'Admin'.DS,
    ),
    'View' => array(
        ROOT. DS .APP_DIR .DS. 'View'.DS.'Admin'.DS,
    ),
));

ログファイルに出力

$this->log($foo); // error.log へ出力
$this->log($foo , LOG_DEBUG); // debug.log へ出力

Configure定数

Configure::read('App');

[fullBaseUrl] => ...
[imageBaseUrl] => img/
[cssBaseUrl] => css/
[jsBaseUrl] => js/
[base] =>
[baseUrl] =>
[dir] => ...
[webroot] => ...
[www_root] => ...
[encoding] => UTF-8

saveメソッド

// 引数 (データ、バリデーション, [保存フィールド、コールバックの有無])
$this->Model->save($data, false, [
    'fieldList' => 'flag',
    'callbacks' => false
    ]);

// 特定のフィールドを削除する場合は
$saveData['Model']['id']   = 1;
$saveData['Model']['flag'] = null;
$this->Model->save($saveData);

SecurityComponent

public $components = [
    'Security' => [
        'csrfCheck'   => true,          // CSRFチェックを行うか
        'csrfExpires' => '+1 hour',     // トークン有効期限
        'csrfUseOnce' => true,          // トークを1リクエストごとに変更するか
        'csrfLimit'   => 100,           // トークン保持数。超過で古い順に削除される
        'validatePost ' =>  false,      // フォーム改ざんチェック
        'unlockedActions' => ['index'], // チェック対象外アクション,
        'requirePost'     => ['index'], // POSTを強制するアクション。空で全て
        'requireSSL'      => '',        // SSLを強制するアクション。空で全て
        'blackHoleCallback' => 'blackHole'
    ]
];

function beforeFilter() {
    parent::beforeFilter();
    $this->Security->blackHoleCallback = "blackHole"; // エラー発生時の実行アクション
}

function blackHole($type){
    // エラーの種類が渡される
    if ($type === 'csrf') {

    } elseif ($type === 'post') {

    }
}

バリデーションオプション

オプション デフォルト値 説明
allowEmpty true 空文字,0,'0',null,false,array()を許可するか
last true 同フィールドに複数にバリデーション設定している場合、エラー発生で以降のバリデーションを中止する
message ルールのキー エラーメッセージ
on null 'create','update'でバリデーション適用機会の設定
required false 必須。'create','update'を指定可能
CONTENTS
  1. コントローラなどをディレクトリで分ける
  2. ログファイルに出力
  3. Configure定数
  4. saveメソッド
  5. SecurityComponent
  6. バリデーションオプション