Completed
Push — master ( 393880...0cf65c )
by wen
03:11
created

NamedElement::unique()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 10
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 10
rs 9.4285
c 0
b 0
f 0
cc 2
eloc 5
nc 2
nop 1
1
<?php
2
3
namespace Sco\Admin\Form\Elements;
4
5
class NamedElement extends Element
6
{
7
    public function required($message = null)
8
    {
9
        $this->addValidationRule('required', $message);
10
        return $this;
11
    }
12
13
    public function unique($message = null)
14
    {
15
        $this->addValidationRule('_unique');
16
17
        if (!is_null($message)) {
18
            $this->addValidationMessage('unique', $message);
19
        }
20
21
        return $this;
22
    }
23
24
    public function getValidationRules()
25
    {
26
        $rules = parent::getValidationRules();
27
28
        foreach ($rules as &$rule) {
29
            if ($rule !== '_unique') {
30
                continue;
31
            }
32
33
            $model = $this->getModel();
34
            $table = $model->getTable();
35
36
            $rule = 'unique:'.$table.','.$this->getName();
37
            if ($model->exists) {
38
                $rule .= ','.$model->getKey();
39
            }
40
        }
41
        unset($rule);
42
43
        return [$this->getName() => $rules];
44
    }
45
46
    /**
47
     * @return array
48
     */
49
    public function getValidationMessages()
50
    {
51
        $messages = parent::getValidationMessages();
52
53
        foreach ($messages as $rule => $message) {
54
            $messages[$this->getName().'.'.$rule] = $message;
55
            unset($messages[$rule]);
56
        }
57
58
        return $messages;
59
    }
60
}
61