【読書】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'を指定可能