README.md 2.66 KB
Newer Older
1
2
3
4
5
6
7
8
# Логгер изменений сущностей для Yii2

## Установка

Через composer:

```json
"repositories": [
9
10
11
12
13
...
{
"type": "git",
"url": "https://gitlab.deck.lc/deckko/logger.git"
}
14
15
]
```
Карим Шарафутдинов's avatar
init  
Карим Шарафутдинов committed
16
17

```shell
18
composer require deck/logger
Карим Шарафутдинов's avatar
init  
Карим Шарафутдинов committed
19
20
```

21
## Конфигурация
22

Карим Шарафутдинов's avatar
readme    
Карим Шарафутдинов committed
23
main configuration file:
Карим Шарафутдинов's avatar
init  
Карим Шарафутдинов committed
24
25
26
27

```php
'bootstrap' => [
    ...
Карим Шарафутдинов's avatar
readme    
Карим Шарафутдинов committed
28
    'logger',
Карим Шарафутдинов's avatar
init  
Карим Шарафутдинов committed
29
],
Карим Шарафутдинов's avatar
readme    
Карим Шарафутдинов committed
30
31
32
'modules' => [
    ...
    'logger' => [
Карим Шарафутдинов's avatar
readme    
Карим Шарафутдинов committed
33
        'class' => \deck\logger\Module::class,
Карим Шарафутдинов's avatar
readme    
Карим Шарафутдинов committed
34
        'serializerMappingClass' => // your implementation of deck\logger\interfaces\SerializerMappingI,
Карим Шарафутдинов's avatar
init  
Карим Шарафутдинов committed
35
    ],
Карим Шарафутдинов's avatar
readme    
Карим Шарафутдинов committed
36
],
Карим Шарафутдинов's avatar
readme    
Карим Шарафутдинов committed
37
38
39
40
41
42
43
44
'components' => [
    'logger' => [
        // [basic Yii2 Queue configuration](https://www.yiiframework.com/extension/yiisoft/yii2-queue/doc/guide/2.0/en/usage#configuration)
    ],
    'mutex' => [
        'class' => // Mutex mechanism implementation class (e.g. \yii\mutex\FileMutex::class),
    ],
]
Карим Шарафутдинов's avatar
init  
Карим Шарафутдинов committed
45
46
```

Карим Шарафутдинов's avatar
readme    
Карим Шарафутдинов committed
47
48
49
## Миграции

migration config file
Карим Шарафутдинов's avatar
init  
Карим Шарафутдинов committed
50
51

```php
Карим Шарафутдинов's avatar
readme    
Карим Шарафутдинов committed
52
53
54
55
56
57
58
59
60
61
62
'controllerMap' => [
        ...
        'migrate' => [
            'class' => 'yii\console\controllers\MigrateController',
            ...
            'migrationNamespaces' => [
                ...
                'deck\logger\migrations'
            ],
        ],
    ],
Карим Шарафутдинов's avatar
init  
Карим Шарафутдинов committed
63
64
65
```

```shell
Карим Шарафутдинов's avatar
readme    
Карим Шарафутдинов committed
66
php yii migrate
Карим Шарафутдинов's avatar
init  
Карим Шарафутдинов committed
67
68
```

69
70
## Реализация функционала

Карим Шарафутдинов's avatar
readme    
Карим Шарафутдинов committed
71
Внести данные сущности в таблицу _logger.entity_type_
72
73
74
```php
class EntityTypeEnum
{
Карим Шарафутдинов's avatar
readme    
Карим Шарафутдинов committed
75
    public const CUSTOM = 1;
76
77
78
    ...
}
```
Карим Шарафутдинов's avatar
readme    
Карим Шарафутдинов committed
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95

```php
class Custom extends \yii\db\ActiveQuery {
    ...
    public function behaviors():array 
    {
        return array_merge(parent::behaviors(), [
            'logger' => [
                'class' => \deck\logger\Logger::class,
                'model' => this,
                'entityTypeId' => EntityTypeEnum::CUSTOM,
            ]       
        ]);
    }
}
```

96
97
98
```php
use deck\logger\Prop

Карим Шарафутдинов's avatar
readme    
Карим Шарафутдинов committed
99
class CustomEventSerializer extends \deck\logger\api\serializers\EventAttributesSerializer
100
{
Карим Шарафутдинов's avatar
readme    
Карим Шарафутдинов committed
101
102
103
104
    /**
     * @return EventAttributeSerializer[]
     */
    public function fields(): array
105
    {
Карим Шарафутдинов's avatar
readme    
Карим Шарафутдинов committed
106
107
108
109
110
111
112
113
        $fields = parent::fields();
        $fields['custom_attribute'] = new EventAttributeSerializer([
            'eventAttribute' => $this->eventAttributes['custom_attribute'],
            'callback' => function ($value) {...},
            'label' => 'custom attribute',
        ]);
        unset($fields['another_custom_attribute']);
        return $fields;
114
115
116
    }
}
```
Карим Шарафутдинов's avatar
readme    
Карим Шарафутдинов committed
117

118
```php
Карим Шарафутдинов's avatar
readme    
Карим Шарафутдинов committed
119
120
121
122
123
124
namespace common\serializers\logger;

use deck\logger\interfaces\SerializerMappingI;

class SerializerMapping implements SerializerMappingI {
    public function map(): array
125
126
    {
        return [
Карим Шарафутдинов's avatar
readme    
Карим Шарафутдинов committed
127
            EntityTypeEnum::CUSTOM => CustomEventSerializer::class,
128
129
130
131
132
            ...
        ];
    }
}
```