Completed
Push — 2.1 ( 75349f...bf116e )
by Alexander
29:27
created

ActiveFormClientScript::getClientOptions()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 18
Code Lines 13

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 4
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 18
ccs 4
cts 4
cp 1
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 13
nc 1
nop 0
crap 1
1
<?php
2
/**
3
 * @link http://www.yiiframework.com/
4
 * @copyright Copyright (c) 2008 Yii Software LLC
5
 * @license http://www.yiiframework.com/license/
6
 */
7
8
namespace yii\jquery;
9
10
use Yii;
11
use yii\helpers\Json;
12
13
/**
14
 * ActiveFormClientScript is a behavior for [[\yii\widgets\ActiveForm]], which allows composition
15
 * of the client-side and AJAX form validation via underlying JQuery plugin.
16
 *
17
 * Usage example:
18
 *
19
 * ```php
20
 * <?php $form = \yii\widgets\ActiveForm::begin([
21
 *     'id' => 'example-form',
22
 *     'as clientScript' => \yii\jquery\ActiveFormClientScript::class,
23
 *     // ...
24
 * ]); ?>
25
 * ...
26
 * <?php \yii\widgets\ActiveForm::end(); ?>
27
 * ```
28
 *
29
 * @see \yii\widgets\ActiveForm
30
 * @see \yii\widgets\ActiveFormClientScriptBehavior
31
 *
32
 * @author Paul Klimov <[email protected]>
33
 * @since 2.1.0
34
 */
35
class ActiveFormClientScript extends \yii\widgets\ActiveFormClientScript
36
{
37
    /**
38
     * {@inheritdoc}
39
     */
40 5
    protected function defaultClientValidatorMap()
41
    {
42
        return [
43 5
            \yii\validators\BooleanValidator::class => \yii\jquery\validators\client\BooleanValidator::class,
44
            \yii\validators\CompareValidator::class => \yii\jquery\validators\client\CompareValidator::class,
45
            \yii\validators\EmailValidator::class => \yii\jquery\validators\client\EmailValidator::class,
46
            \yii\validators\FilterValidator::class => \yii\jquery\validators\client\FilterValidator::class,
47
            \yii\validators\IpValidator::class => \yii\jquery\validators\client\IpValidator::class,
48
            \yii\validators\NumberValidator::class => \yii\jquery\validators\client\NumberValidator::class,
49
            \yii\validators\RangeValidator::class => \yii\jquery\validators\client\RangeValidator::class,
50
            \yii\validators\RegularExpressionValidator::class => \yii\jquery\validators\client\RegularExpressionValidator::class,
51
            \yii\validators\RequiredValidator::class => \yii\jquery\validators\client\RequiredValidator::class,
52
            \yii\validators\StringValidator::class => \yii\jquery\validators\client\StringValidator::class,
53
            \yii\validators\UrlValidator::class => \yii\jquery\validators\client\UrlValidator::class,
54
            \yii\validators\ImageValidator::class => \yii\jquery\validators\client\ImageValidator::class,
55
            \yii\validators\FileValidator::class => \yii\jquery\validators\client\FileValidator::class,
56
            \yii\captcha\CaptchaValidator::class => \yii\jquery\validators\client\CaptchaClientValidator::class,
57
        ];
58
    }
59
60
    /**
61
     * {@inheritdoc}
62
     */
63 5
    protected function registerClientScript()
64
    {
65 5
        $id = $this->owner->options['id'];
66 5
        $options = Json::htmlEncode($this->getClientOptions());
67 5
        $attributes = Json::htmlEncode($this->attributes);
68 5
        $view = $this->owner->getView();
69 5
        ActiveFormAsset::register($view);
70 5
        $view->registerJs("jQuery('#$id').yiiActiveForm($attributes, $options);");
71 5
    }
72
73
    /**
74
     * {@inheritdoc}
75
     */
76 4
    protected function getFieldClientOptions($field)
77
    {
78 4
        $options = parent::getFieldClientOptions($field);
79
80
        // only get the options that are different from the default ones (set in yii.activeForm.js)
81 4
        return array_diff_assoc($options, [
82 4
            'validateOnChange' => true,
83
            'validateOnBlur' => true,
84
            'validateOnType' => false,
85
            'validationDelay' => 500,
86
            'encodeError' => true,
87
            'error' => '.help-block',
88
            'updateAriaInvalid' => true,
89
        ]);
90
    }
91
92
    /**
93
     * {@inheritdoc}
94
     */
95 5
    protected function getClientOptions()
96
    {
97 5
        $options = parent::getClientOptions();
98
99
        // only get the options that are different from the default ones (set in yii.activeForm.js)
100 5
        return array_diff_assoc($options, [
101 5
            'encodeErrorSummary' => true,
102
            'errorSummary' => '.error-summary',
103
            'validateOnSubmit' => true,
104
            'errorCssClass' => 'has-error',
105
            'successCssClass' => 'has-success',
106
            'validatingCssClass' => 'validating',
107
            'ajaxParam' => 'ajax',
108
            'ajaxDataType' => 'json',
109
            'scrollToError' => true,
110
            'scrollToErrorOffset' => 0,
111
        ]);
112
    }
113
}