我想通過在數據庫的特定表中記錄用戶所做的任何操作(用戶,時間戳,[控制器和方法名稱]或[URL和請求方法])來研究用戶行爲。如何在Laravel中記錄用戶操作?如何聆聽控制器方法?
這thread處理類似的問題,但它似乎是聽三種方法;我寧願選擇更全面的解決方案。
所以,這裏是我試過到目前爲止:
global.php
Event::listen('*', function(){
$action = Event::firing();
App::make('SpyController')->spy($action);
});
SpyController.php
class SpyController extends BaseController {
public function spy($action){
$spy = new Spy();
$spy->name=$action;
$spy->user_id=Auth::user()->id;
$spy->save();
}
}
這樣做,我得到一個超時錯誤。我想有太多東西可以聽,而且我應該更好地限制選擇控制器。但是,我不明白如何聆聽特定的控制器。該文檔以auth.login
爲例。如果我說得對,這代表model.method
。是否有可能收聽controller.method
?
Oups,對不起,這是一個錯字。 'Log'是一個保留字,我不能用它作爲模型名稱。因此,爲了保持一致,我用'spy'替換了'log',並且更新了這個問題。如果我聽着似乎是第一個事件的'router.before',那麼腳本工作正常。但是聽'*'會使它工作太久。無論如何,謝謝;) – Yako
我糾正了我的答案:)現在嘗試) – mcklayin
謝謝。我剛剛查看了文檔以瞭解中間件是什麼。這對Laravel 4.2是否也存在?我找不到它...另外,我是否需要爲每種方法添加一些代碼來監控?我可能有一百個......聽取每一個動作,然後在註冊之前通過類/控制器名稱過濾將是理想的... – Yako