私はAppModelでafterSaveとafterDeleteコールバックを使用しているので、すべての書き込み操作をログに記録しようとしています。基本的には、モデル、コントローラ機能、ログインしているユーザデータ、リモートIPをログに記録する必要があります( )私はそれらをすべて取得できたようですが、コントローラの機能を取得する方法はわかりません名。 これは私が今持っているaftersave機能である:AppModel aftersave、コントローラ関数名を取得
public function afterSave($created) {
App::uses('Folder', 'Utility');
$month = date("y-m");
if(!is_dir('../tmp/logs/'.$month)) {
$dir = new Folder('../tmp/logs/'.$month, true);
}
App::uses('CakeSession', 'Model/Datasource');
$user_id = CakeSession::read('Auth.User.username');
if($created) {
$id = 'New';
} else {
$id = $this->data[$this->alias]['id'];
}
$str = 'WRITE Action. Model: '.$this->alias.'. Controller: functon_name. ID:'.$id.'. Username: '.$user_id.'. Client IP: '.$this->getIP();
CakeLog::write($month.'/'.date("d-m-y"), $str);
}
おかげ
ありがとう、ジェレミー。あなたが言ったように、私はbeforefilterのコードをアプリケーションコントローラに入れました。しかし問題は何らかの理由で$ this-> request ['params'] ['action']で空の出力があったため、app- modelでは$ this-> request-> actionをうまく使っていました。 afterSaveがスキップされる可能性がある場合は、よりうまく説明できますか?再びありがとう、本当に便利でした。 – slacky
'afterSave'は、' 'callbacks '=> false'を保存オプションに渡すとスキップできます。彼らが望むなら、行動などはこれを修正することができます。 – jeremyharris
もう一度、ありがとう。 – slacky