protected function getClientOptions()
    {
        $attribute = Html::getAttributeName($this->attribute);
        if (!in_array($attribute, $this->model->activeAttributes(), true)) {
            return [];
        }

        $clientValidation = $this->isClientValidationEnabled();
        $ajaxValidation = $this->isAjaxValidationEnabled();

        if ($clientValidation) {
            $validators = [];
            foreach ($this->model->getActiveValidators($attribute) as $validator) {
                /* @var $validator \yii\validators\Validator */
                $js = $validator->clientValidateAttribute($this->model, $attribute, $this->form->getView());
                if ($validator->enableClientValidation && $js != '') {
                    if ($validator->whenClient !== null) {
                        $js = "if (({$validator->whenClient})(attribute, value)) { $js }";
                    }
                    $validators[] = $js;
                }
            }
        }

        if (!$ajaxValidation && (!$clientValidation || empty($validators))) {
            return [];
        }

        $options = [];

        $inputID = $this->getInputId();
        $options['id'] = Html::getInputId($this->model, $this->attribute);
        $options['name'] = $this->attribute;

        $options['container'] = isset($this->selectors['container']) ? $this->selectors['container'] : ".field-$inputID";
        $options['input'] = isset($this->selectors['input']) ? $this->selectors['input'] : "#$inputID";
        if (isset($this->selectors['error'])) {
            $options['error'] = $this->selectors['error'];
        } elseif (isset($this->errorOptions['class'])) {
            $options['error'] = '.' . implode('.', preg_split('/\s+/', $this->errorOptions['class'], -1, PREG_SPLIT_NO_EMPTY));
        } else {
            $options['error'] = isset($this->errorOptions['tag']) ? $this->errorOptions['tag'] : 'span';
        }

        $options['encodeError'] = !isset($this->errorOptions['encode']) || $this->errorOptions['encode'];
        if ($ajaxValidation) {
            $options['enableAjaxValidation'] = true;
        }
        foreach (['validateOnChange', 'validateOnBlur', 'validateOnType', 'validationDelay'] as $name) {
            $options[$name] = $this->$name === null ? $this->form->$name : $this->$name;
        }

        if (!empty($validators)) {
            $options['validate'] = new JsExpression('function (attribute, value, messages, deferred, $form) {' . implode('', $validators) . '}');
        }

        if ($this->addAriaAttributes === false) {
            $options['updateAriaInvalid'] = false;
        }

        // only get the options that are different from the default ones (set in yii.activeForm.js)
        return array_diff_assoc($options, [
            'validateOnChange' => true,
            'validateOnBlur' => true,
            'validateOnType' => false,
            'validationDelay' => 500,
            'encodeError' => true,
            'error' => '.help-block',
            'updateAriaInvalid' => true,
        ]);
    }
protected function getClientOptions()
    {
        $attribute = Html::getAttributeName($this->attribute);
        if (!in_array($attribute, $this->model->activeAttributes(), true)) {
            return [];
        }

        $clientValidation = $this->isClientValidationEnabled();
        $ajaxValidation = $this->isAjaxValidationEnabled();

        if ($clientValidation) {
            $validators = [];
            foreach ($this->model->getActiveValidators($attribute) as $validator) {
                
                $js = $validator->clientValidateAttribute($this->model, $attribute, $this->form->getView());
                if ($validator->enableClientValidation && $js != '') {
                    if ($validator->whenClient !== null) {
                        $js = "if (({$validator->whenClient})(attribute, value)) { $js }";
                    }
                    $validators[] = $js;
                }
            }
        }

        if (!$ajaxValidation && (!$clientValidation || empty($validators))) {
            return [];
        }

        $options = [];

        $inputID = $this->getInputId();
        $options['id'] = Html::getInputId($this->model, $this->attribute);
        $options['name'] = $this->attribute;

        $options['container'] = isset($this->selectors['container']) ? $this->selectors['container'] : ".field-$inputID";
        $options['input'] = isset($this->selectors['input']) ? $this->selectors['input'] : "
        if (isset($this->selectors['error'])) {
            $options['error'] = $this->selectors['error'];
        } elseif (isset($this->errorOptions['class'])) {
            $options['error'] = '.' . implode('.', preg_split('/\s+/', $this->errorOptions['class'], -1, PREG_SPLIT_NO_EMPTY));
        } else {
            $options['error'] = isset($this->errorOptions['tag']) ? $this->errorOptions['tag'] : 'span';
        }

        $options['encodeError'] = !isset($this->errorOptions['encode']) || $this->errorOptions['encode'];
        if ($ajaxValidation) {
            $options['enableAjaxValidation'] = true;
        }
        foreach (['validateOnChange', 'validateOnBlur', 'validateOnType', 'validationDelay'] as $name) {
            $options[$name] = $this->$name === null ? $this->form->$name : $this->$name;
        }

        if (!empty($validators)) {
            $options['validate'] = new JsExpression('function (attribute, value, messages, deferred, $form) {' . implode('', $validators) . '}');
        }

        if ($this->addAriaAttributes === false) {
            $options['updateAriaInvalid'] = false;
        }

        
        return array_diff_assoc($options, [
            'validateOnChange' => true,
            'validateOnBlur' => true,
            'validateOnType' => false,
            'validationDelay' => 500,
            'encodeError' => true,
            'error' => '.help-block',
            'updateAriaInvalid' => true,
        ]);
    }
protected function getClientOptions ( ) { $ attribute = Html :: getAttributeName ( $ this -> attribute ) ; if ( ! in_array ( $ attribute , $ this -> model -> activeAttributes ( ) , true ) ) { return [ ] ; } $ clientValidation = $ this -> isClientValidationEnabled ( ) ; $ ajaxValidation = $ this -> isAjaxValidationEnabled ( ) ; if ( $ clientValidation ) { $ validators = [ ] ; foreach ( $ this -> model -> getActiveValidators ( $ attribute ) as $ validator ) { /* @var $validator \yii\validators\Validator */ $ js = $ validator -> clientValidateAttribute ( $ this -> model , $ attribute , $ this -> form -> getView ( ) ) ; if ( $ validator -> enableClientValidation && $ js != '' ) { if ( $ validator -> whenClient !== null ) { $ js = "if (({$validator->whenClient})(attribute, value)) { $js }" ; } $ validators [ ] = $ js ; } } } if ( ! $ ajaxValidation && ( ! $ clientValidation || empty ( $ validators ) ) ) { return [ ] ; } $ options = [ ] ; $ inputID = $ this -> getInputId ( ) ; $ options [ 'id' ] = Html :: getInputId ( $ this -> model , $ this -> attribute ) ; $ options [ 'name' ] = $ this -> attribute ; $ options [ 'container' ] = isset ( $ this -> selectors [ 'container' ] ) ? $ this -> selectors [ 'container' ] : ".field-$inputID" ; $ options [ 'input' ] = isset ( $ this -> selectors [ 'input' ] ) ? $ this -> selectors [ 'input' ] : "#$inputID" ; if ( isset ( $ this -> selectors [ 'error' ] ) ) { $ options [ 'error' ] = $ this -> selectors [ 'error' ] ; } elseif ( isset ( $ this -> errorOptions [ 'class' ] ) ) { $ options [ 'error' ] = '.' . implode ( '.' , preg_split ( '/\s+/' , $ this -> errorOptions [ 'class' ] , - 1 , PREG_SPLIT_NO_EMPTY ) ) ; } else { $ options [ 'error' ] = isset ( $ this -> errorOptions [ 'tag' ] ) ? $ this -> errorOptions [ 'tag' ] : 'span' ; } $ options [ 'encodeError' ] = ! isset ( $ this -> errorOptions [ 'encode' ] ) || $ this -> errorOptions [ 'encode' ] ; if ( $ ajaxValidation ) { $ options [ 'enableAjaxValidation' ] = true ; } foreach ( [ 'validateOnChange' , 'validateOnBlur' , 'validateOnType' , 'validationDelay' ] as $ name ) { $ options [ $ name ] = $ this -> $ name === null ? $ this -> form -> $ name : $ this -> $ name ; } if ( ! empty ( $ validators ) ) { $ options [ 'validate' ] = new JsExpression ( 'function (attribute, value, messages, deferred, $form) {' . implode ( '' , $ validators ) . '}' ) ; } if ( $ this -> addAriaAttributes === false ) { $ options [ 'updateAriaInvalid' ] = false ; } // only get the options that are different from the default ones (set in yii.activeForm.js) return array_diff_assoc ( $ options , [ 'validateOnChange' => true , 'validateOnBlur' => true , 'validateOnType' => false , 'validationDelay' => 500 , 'encodeError' => true , 'error' => '.help-block' , 'updateAriaInvalid' => true , ] ) ; }
Returns the JS options for the field.
@return array the JS options.
Returns the JS options for the field .