Нет такого класса, но я реализовал это несколько раз.Это включает в себя «подталкивание» стандартного класса Model_Table для включения функциональности во ВСЕ ваши модели.Вот рецепт.
- Создайте свой класс модели журнала аудита.Model_AuditLog, вероятно, было бы хорошим именем.
- Создайте файл в lib / Model / Table.php, который заменяет общего предка всех ваших моделей на основе приведенного ниже кода.
- Напишите аналогичный код для beforeUpdate /afterUpdate и beforeDelete / afterDelete
Вы можете опустить «update» из «beforeInsert», если вы заинтересованы только в успешных операциях.Создайте несколько тестов.Не забудьте убедиться, что Model_Audit НЕ наследует ваш класс, чтобы избежать рекурсии.На самом деле вы можете называть класс по-разному, если не забываете использовать его для моделей.
В какой-то момент Agile Toolkit будет иметь возможность беспрепятственного аудита через Controller, наиболее вероятно в 4.2.
class Model_Table extends Model_MVCTable {
function beforeInsert($data){
$this->insert_audit = $this->add('Model_Audit')
->set('action','insert');
$this->insert_audit->update();
return parent::beforeInsert($data);
}
function afterInsert($id){
$this->insert_audit->set('is_completed',true)
->update();
return parent::afterInsert($id);
}
}