0
我正在嘗試記錄每個寫入操作,所以我在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);
}
感謝
謝謝你傑里米。我按照你的說法做了,我把代碼放在應用程序控制器之前。然而,問題是由於某種原因,我在$ this-> request ['params'] ['action']上有一個空輸出,所以我使用了$ this-> request-> action,它運行良好。你能否更好地解釋afterSave可以跳過的情況?再次感謝,這真的很有用。 – slacky 2012-04-16 17:42:52
如果您在保存選項中傳遞''callbacks'=> false'''afterSave',可以跳過。行爲等可以修改,如果他們想。 – jeremyharris 2012-04-16 17:50:00
明白了,再次感謝。 – slacky 2012-04-16 17:56:21