こんにちわ、masumasuです。
梅雨の晴れ間が待ち遠しい今日この頃ですが、皆様いかがお過ごしでしょうか。
今回はCakephpでの共通処理で使われる「beforeFilter、afterFilter、beforeMashel」について書いていきます。
beforeFilter
コントローラーのアクションが実行される前に呼び出されるメソッドです。
認証や権限チェックなど、アクションの前に行いたい共通の処理を記述します。
例としては、
public function beforeFilter(\Cake\Event\EventInterface $event)
{
parent::beforeFilter($event);
// ログインが必要なアクションを指定
$this->Auth->allow(['login', 'register']);
}
afterFilter
コントローラーのアクションが実行された後に呼び出されるメソッドです。
アクションの後に行いたい共通の処理を記述します。通常はログ記録やデバッグ情報の出力などに使用します。
例としては、
public function afterFilter(\Cake\Event\EventInterface $event)
{
parent::afterFilter($event);
// アクション後の共通処理
// 例えば、ログの記録
$this->log('アクションが実行されました: ' . $this->request->getParam('action'), 'debug');
}
beforeMashel
beforeMarshal
は、データがエンティティに変換される前に呼び出されるメソッドです。
モデルに記述しコントローラーで呼び出します。
フォームデータの前処理やバリデーションなどに使用します。
例としては、
public function beforeMarshal(Event $event, ArrayObject $data, ArrayObject $options)
{
// データがエンティティに変換される前の共通処理
// 例えば、名前のトリミング
if (isset($data['name'])) {
$data['name'] = trim($data['name']);
}
}
まとめ
今回は「beforeFilter、afterFilter、beforeMashel」について書きました。少しでも参考になれば幸いです。
ご覧いただきありがとうございます。