Address::rules()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 9
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Importance

Changes 3
Bugs 0 Features 1
Metric Value
eloc 7
c 3
b 0
f 1
dl 0
loc 9
rs 10
cc 1
nc 1
nop 0
1
<?php
2
namespace tonisormisson\addressform\models;
3
4
use yii\base\Model;
5
use Yii;
6
7
/**
8
 * Class Address
9
 * @package tonisormisson\addressform\models
10
 * @author Tõnis Ormisson <[email protected]>
11
 */
12
class Address extends Model
13
{
14
    /** @var string */
15
    public $name;
16
17
    /** @var string $country 2-letter iso code*/
18
    public $country;
19
20
    /** @var string $state*/
21
    public $state;
22
23
    /** @var string $city*/
24
    public $city;
25
26
    /** @var string $postCode*/
27
    public $postCode;
28
29
    /** @var string $addressLine1 */
30
    public $addressLine1;
31
32
    /** @var string $addressLine2 */
33
    public $addressLine2;
34
35
    public static $defaultRequiredFields = ['name', 'country', 'state', 'postCode', 'city', 'addressLine1', 'state'];
36
37
    public $requiredFields = [];
38
39
    /**
40
     * {@inheritdoc}
41
     */
42
    public function init()
43
    {
44
        parent::init();
45
        if (empty($this->requiredFields)) {
46
            $this->requiredFields = self::$defaultRequiredFields;
47
        }
48
    }
49
50
    /**
51
     * {@inheritdoc}
52
     */
53
    public function rules()
54
    {
55
        return [
56
            [$this->requiredFields, 'required'],
57
            [['name', 'city', 'addressLine1', 'addressLine2'], 'string', 'max' => 128],
58
            [['name'], 'string', 'min' => 2],
59
            [['country'], 'string', 'min' => 2, 'max' => 2], // 2-char iso code
60
            [['state'], 'string', 'max' => 8], // code
61
            [['postCode'], 'string', 'min' => 2, 'max' => 12], // code
62
        ];
63
    }
64
65
    public function attributeLabels()
66
    {
67
        return [
68
            'name' => Yii::t("addressform", "Name"),
69
            'country' => Yii::t("addressform", "Country"),
70
            'state' => Yii::t("addressform", "State"),
71
            'city' => Yii::t("addressform", "City"),
72
            'postCode' => Yii::t("addressform", "Post Code"),
73
            'addressLine1' => Yii::t("addressform", "Street address"),
74
            'addressLine2' => Yii::t("addressform", "Section, floor, etc."),
75
76
        ];
77
    }
78
79
}