Как регистрировать действия пользователей в Laravel? Как слушать методы контроллеров?

Я хотел бы изучить поведение пользователей, записав в конкретной таблице базы данных любые действия, выполненные пользователями (user, timestamp, [имя контроллера и метода] или [url и метод запроса]).

это нить имеет дело с похожим вопросом, но, кажется, слушает три метода; Я бы предпочел более глобальное решение.

Итак, вот что я попробовал до сих пор:

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?

2

Решение

Ошибка тайм-аута, я думал, потому что у вас есть контроллер LogController вместо SpyController

auth.login, auth.attempt, router. * являются встроенными в laravel src и запускаются диспетчером.
Таким образом, если вам нужно создать список для контроллеров, вы можете создать промежуточное программное обеспечение, которое будет запускать событие с чем угодно.
Например:
Зарегистрированное имя промежуточного программного обеспечения — spylogs.
Метод обработки (в промежуточном программном обеспечении):

    public function handle($request, Closure $next)
{
$method = $request->method();
Event::fire('some_name.'.$method);
return $next($request);
}

В контроллере:

$this->middleware('spylogs');

Где угодно:

Event::listen('some_name.method_name', callback);
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]