【読書】CakePHP2 定番レシピ119
Webアプリ開発を加速する CakePHP2定番レシピ119から、今後使用していきたいものをメモしておきます。
コントローラなどをディレクトリで分ける
ログファイルに出力
$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'を指定可能 |