TableMultilanguage   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 82
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 12
c 1
b 0
f 0
dl 0
loc 82
rs 10
wmc 4

3 Methods

Rating   Name   Duplication   Size   Complexity  
A setModel() 0 3 1
A setLanguageModel() 0 3 1
A run() 0 10 2
1
<?php
2
3
namespace Itstructure\FieldWidgets;
4
5
use yii\base\{Model, Widget, InvalidConfigException};
6
use Itstructure\FieldWidgets\interfaces\LanguageListInterface;
7
8
/**
9
 * Class TableMultilanguage
10
 * The output widget class for each specified translation list field.
11
 *
12
 * @property LanguageListInterface $languageModel
13
 * @property array $fields
14
 * @property Model $model
15
 *
16
 * @package Itstructure\FieldWidgets
17
 */
18
class TableMultilanguage extends Widget
19
{
20
    /**
21
     * Language model.
22
     * For multilanguage mode.
23
     *
24
     * @var LanguageListInterface
25
     */
26
    private $languageModel;
27
28
    /**
29
     * Field list
30
     * For each field, you must specify its name: name. Optional parameter: label.
31
     * To get the value of a field from other parts, you need to specify the path with the combination of entities through the point.
32
     * Example:
33
     * fields => [
34
     *      [
35
     *          'name' => 'id',
36
     *          'label' => 'Name',
37
     *      ],
38
     *      [
39
     *          'name' => 'title',
40
     *          'label' => 'Title',
41
     *      ],
42
     *      [
43
     *          'name' => 'posts.tag',
44
     *          'label' => 'Post tags',
45
     *      ]
46
     * ];
47
     *
48
     * @var array
49
     */
50
    public $fields = [];
51
52
    /**
53
     * Model for current fields.
54
     *
55
     * @var Model
56
     */
57
    private $model;
58
59
    /**
60
     * Sets the language model.
61
     *
62
     * @param mixed $languageModel
63
     *
64
     * @return void
65
     */
66
    public function setLanguageModel(LanguageListInterface $languageModel): void
67
    {
68
        $this->languageModel = $languageModel;
69
    }
70
71
    /**
72
     * Sets the model of the current fields.
73
     *
74
     * @param Model $model
75
     *
76
     * @return void
77
     */
78
    public function setModel(Model $model): void
79
    {
80
        $this->model = $model;
81
    }
82
83
    /**
84
     * Starts output for each specified field of the translation list.
85
     *
86
     * @throws InvalidConfigException
87
     *
88
     * @return string
89
     */
90
    public function run(): string
91
    {
92
        if (null === $this->languageModel) {
93
            throw new InvalidConfigException('Language model is not defined.');
94
        }
95
96
        return $this->render('tableMultilanguage', [
97
            'languageModel' => $this->languageModel,
98
            'fields'        => $this->fields,
99
            'model'         => $this->model,
100
        ]);
101
    }
102
}
103