Логирование (записи что, кто и когда сделал пользователь)
-
- Сообщения: 17
- Зарегистрирован: 2014.07.01, 19:02
Логирование (записи что, кто и когда сделал пользователь)
Нужно записывать действия пользователя (кто, что и куда сохранил, удалил, заапдейтил).
Думал в сторону beforeAction, но тут надо или описывать в каждом контроллере или унаследоваться от CustomBaseController, а так как я использую сторонние модули вышеуказаный вариант неочень подходит..
Думал в сторону beforeAction, но тут надо или описывать в каждом контроллере или унаследоваться от CustomBaseController, а так как я использую сторонние модули вышеуказаный вариант неочень подходит..
Re: Логирование (записи что, кто и когда сделал пользователь)
странно думать о контроллере, если логировать хотите состояние объектов моделейvlvladimir писал(а):Нужно записывать действия пользователя (кто, что и куда сохранил, удалил, заапдейтил).
Думал в сторону beforeAction
по этому никогда и не нужно использовать базовые контроллерыvlvladimir писал(а):но тут надо или описывать в каждом контроллере или унаследоваться от CustomBaseController, а так как я использую сторонние модули вышеуказаный вариант неочень подходит..
напишите поведение, внутри делеайте слепок во время AFTER_CONSTRUCT/AFTER_FIND и AFTER_SAVE, разницу записывайте.
-
- Сообщения: 17
- Зарегистрирован: 2014.07.01, 19:02
Re: Логирование (записи что, кто и когда сделал пользователь)
подключил в common\config
afterAction срабатывает, а вот afterFind нет. (пробывал и другие события для ActiveRecord === та же самая история)
Код: Выделить всё
'as LogBehavior' => [
'class' => \common\components\MyBehavior::className(),
],
Код: Выделить всё
class MyBehavior extends Behavior{
public function events()
{
return [
Controller::EVENT_AFTER_ACTION => 'afterAction',
ActiveRecord::EVENT_AFTER_FIND => 'afterFind',
];
}
public function afterAction(){
echo 'afterAction work';
}
public function afterFind(){
echo 'find work';
}
}
Re: Логирование (записи что, кто и когда сделал пользователь)
причем тут afterAction? что вы там собираетесь делать? прочитайте внимательно мой первый коммент.vlvladimir писал(а):подключил в common\configКод: Выделить всё
'as LogBehavior' => [ 'class' => \common\components\MyBehavior::className(), ],
afterAction срабатывает, а вот afterFind нет. (пробывал и другие события для ActiveRecord === та же самая история)Код: Выделить всё
class MyBehavior extends Behavior{ public function events() { return [ Controller::EVENT_AFTER_ACTION => 'afterAction', ActiveRecord::EVENT_AFTER_FIND => 'afterFind', ]; } public function afterAction(){ echo 'afterAction work'; } public function afterFind(){ echo 'find work'; } }
afterFind вызовется после извлечения записи из базы.
Re: Логирование (записи что, кто и когда сделал пользователь)
или вы что хотите логировать? куда зашел человек? тогда afterAction достаточно.
- slavcodev
- Сообщения: 3134
- Зарегистрирован: 2009.04.02, 21:42
- Откуда: Valencia
- Контактная информация:
Re: Логирование (записи что, кто и когда сделал пользователь)
Cценарий 1: Логирование изменения моделей.
1) После восстановления из базы, сохраняем атрибуты модели
2) После сохранения новых данных, сохраняем так же разницу с данными из пункта 1 (глянь dirty attributes в Yii2 добавили)
Cценарий 2: Логирование действий пользователей.
1) Перед каждым действием логируем: действие (УРЛ с параметрами) и данные из Request
Вообщем надо определится с задачей конкретнее, что там собрались логировать.
1) После восстановления из базы, сохраняем атрибуты модели
2) После сохранения новых данных, сохраняем так же разницу с данными из пункта 1 (глянь dirty attributes в Yii2 добавили)
Cценарий 2: Логирование действий пользователей.
1) Перед каждым действием логируем: действие (УРЛ с параметрами) и данные из Request
Вообщем надо определится с задачей конкретнее, что там собрались логировать.
Жду Yii 3!
-
- Сообщения: 17
- Зарегистрирован: 2014.07.01, 19:02
Re: Логирование (записи что, кто и когда сделал пользователь)
В том то и дело, что afterFind не срабатывает. Не срабатывает не одно событие ActiveRecord. А afterAction - это как пример, чтобы проверить срабатывают ли другие событие(в частности события Controller)zelenin писал(а):причем тут afterAction? что вы там собираетесь делать? прочитайте внимательно мой первый коммент.vlvladimir писал(а):подключил в common\configКод: Выделить всё
'as LogBehavior' => [ 'class' => \common\components\MyBehavior::className(), ],
afterAction срабатывает, а вот afterFind нет. (пробывал и другие события для ActiveRecord === та же самая история)Код: Выделить всё
class MyBehavior extends Behavior{ public function events() { return [ Controller::EVENT_AFTER_ACTION => 'afterAction', ActiveRecord::EVENT_AFTER_FIND => 'afterFind', ]; } public function afterAction(){ echo 'afterAction work'; } public function afterFind(){ echo 'find work'; } }
afterFind вызовется после извлечения записи из базы.
Re: Логирование (записи что, кто и когда сделал пользователь)
а как он может сработать, если он он срабатывает после find() модели, а вы никакой модели не ищете?vlvladimir писал(а): В том то и дело, что afterFind не срабатывает. Не срабатывает не одно событие ActiveRecord. А afterAction - это как пример, чтобы проверить срабатывают ли другие событие(в частности события Controller)
-
- Сообщения: 17
- Зарегистрирован: 2014.07.01, 19:02
Re: Логирование (записи что, кто и когда сделал пользователь)
Наконец до меня дошло. Спасибо. zelenin.zelenin писал(а):а как он может сработать, если он он срабатывает после find() модели, а вы никакой модели не ищете?vlvladimir писал(а): В том то и дело, что afterFind не срабатывает. Не срабатывает не одно событие ActiveRecord. А afterAction - это как пример, чтобы проверить срабатывают ли другие событие(в частности события Controller)
Я думал что в конфиге
Код: Выделить всё
'as LogBehavior' => [
'class' => \common\components\MyBehavior::className(),
],
А надо цеплять поведение конкретно к каждой модели.
Re: Логирование (записи что, кто и когда сделал пользователь)
верноvlvladimir писал(а):Наконец до меня дошло. Спасибо. zelenin.zelenin писал(а):а как он может сработать, если он он срабатывает после find() модели, а вы никакой модели не ищете?vlvladimir писал(а): В том то и дело, что afterFind не срабатывает. Не срабатывает не одно событие ActiveRecord. А afterAction - это как пример, чтобы проверить срабатывают ли другие событие(в частности события Controller)
Я думал что в конфигебудет достаточно, чтобы слушать события любой модели.Код: Выделить всё
'as LogBehavior' => [ 'class' => \common\components\MyBehavior::className(), ],
А надо цеплять поведение конкретно к каждой модели.