Bootstrap::loadShortValidators()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 17

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 17
rs 9.7
c 0
b 0
f 0
cc 1
nc 1
nop 0
1
<?php
2
/**
3
 * @link https://github.com/phpviet/yii-validation
4
 *
5
 * @copyright (c) PHP Viet
6
 * @license [MIT](https://opensource.org/licenses/MIT)
7
 */
8
9
namespace phpviet\yii\validation;
10
11
use yii\i18n\I18N;
12
use yii\validators\Validator;
13
use yii\base\BootstrapInterface;
14
use phpviet\yii\validation\validators\IdVNValidator;
15
use phpviet\yii\validation\validators\IpVNValidator;
16
use phpviet\yii\validation\validators\MobileVNValidator;
17
use phpviet\yii\validation\validators\LandLineVNValidator;
18
19
/**
20
 * @author Vuong Minh <[email protected]>
21
 *
22
 * @since 1.0.0
23
 */
24
class Bootstrap implements BootstrapInterface
25
{
26
    /**
27
     * {@inheritdoc}
28
     */
29
    public function bootstrap($app): void
30
    {
31
        $this->loadTrans($app->i18n);
32
        $this->loadShortValidators();
33
    }
34
35
    /**
36
     * Nạp translation hổ trợ đa ngôn ngữ cho câu báo lỗi.
37
     *
38
     * @param I18N $i18n
39
     */
40
    protected function loadTrans(I18N $i18n): void
41
    {
42
        $i18n->translations['phpviet/validation'] = array_merge([
43
            'class' => 'yii\i18n\PhpMessageSource',
44
            'basePath' => '@phpviet/yii/validation/messages',
45
            'fileMap' => [
46
                'phpviet/validation' => 'validation.php',
47
            ],
48
        ], $i18n->translations['phpviet/validation'] ?? []);
49
    }
50
51
    /**
52
     * Nạp short validators vào lớp `yii\validators\Validator` hổ trợ friendly syntax.
53
     */
54
    protected function loadShortValidators(): void
55
    {
56
        Validator::$builtInValidators = array_merge(Validator::$builtInValidators, [
57
            'land_line_vn' => LandLineVNValidator::class,
58
            'mobile_vn' => MobileVNValidator::class,
59
            'id_vn' => IdVNValidator::class,
60
            'ip_vn' => IpVNValidator::class,
61
            'ipv4_vn' => [
62
                'class' => IpVNValidator::class,
63
                'version' => IpVNValidator::IPV4,
64
            ],
65
            'ipv6_vn' => [
66
                'class' => IpVNValidator::class,
67
                'version' => IpVNValidator::IPV6,
68
            ],
69
        ]);
70
    }
71
}
72