Проблема с добавлением валидации поля.

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Закрыто
Аватара пользователя
Chelobaka
Сообщения: 214
Зарегистрирован: 2018.06.01, 09:54

Проблема с добавлением валидации поля.

Сообщение Chelobaka »

Не видит функцию для валидации полей.

Если делать так:

Код: Выделить всё

            ['full_name', 'required', 'when' => function ($model) {
                return $model->company_id == '';
            }, 'whenClient' => "function (attribute, value) {
                return $('#transfer-company_id').val() == '';
            }"],
            ['company_id', 'required', 'when' => function ($model) {
                return $model->full_name == '';
            }, 'whenClient' => "function (attribute, value) {
                return $('#transfer-full_name').val() == '';
            }"],
            
            
Работает исправно. Если так как ниже то вообще не реагирует.

Код: Выделить всё

[['full_name', 'company_id'], 'fill', 'skipOnEmpty'=> false],



public function fill($attribute_name, $params)
    {
        if (empty($this->company_id)
            && empty($this->full_name)
        ) {
            $this->addError($attribute_name, Yii::t('app', 'At least 1 of the field must be filled up properly'));

            return false;
        }
        return true;
    }
    
Последний раз редактировалось Chelobaka 2019.08.09, 15:38, всего редактировалось 1 раз.
Loveorigami
Сообщения: 977
Зарегистрирован: 2014.08.27, 21:54

Re: Проблема с добавлением валидации поля.

Сообщение Loveorigami »

Атрибута fill в модели нет?
Аватара пользователя
Alexum
Сообщения: 683
Зарегистрирован: 2016.09.26, 10:00

Re: Проблема с добавлением валидации поля.

Сообщение Alexum »

Какие ещё валидаторы висят на полях во втором варианте? "Вообще не реагирует" - это как, сохраняет модель без обоих заполненных полей?
Аватара пользователя
leonenco
Сообщения: 155
Зарегистрирован: 2017.01.30, 22:42

Re: Проблема с добавлением валидации поля.

Сообщение leonenco »

Chelobaka писал(а): 2019.08.05, 14:27 Не видит функцию для валидации полей.

Если делать так:

Код: Выделить всё

            ['full_name', 'required', 'when' => function ($model) {
                return $model->company_id == '';
            }, 'whenClient' => "function (attribute, value) {
                return $('#transfer-company_id').val() == '';
            }"],
            ['company_id', 'required', 'when' => function ($model) {
                return $model->full_name == '';
            }, 'whenClient' => "function (attribute, value) {
                return $('#transfer-full_name').val() == '';
            }"],
            
            
Работает исправно. Если так как ниже то вообще не реагирует.

Код: Выделить всё

[['full_name', 'company_id'], 'fill', 'skipOnEmpty'=> false],



public function fill($attribute_name, $params)
    {
        if (empty($this->company_id)
            && empty($this->full_name)
        ) {
            $this->addError($attribute_name, Yii::t('app', 'At least 1 of the field must be filled up properly'));

            return false;
        }
        return true;
    }
    
а почему вы функцию квотите?

Код: Выделить всё

'whenClient' => "function (attribute, value) {
      return $('#transfer-company_id').val() == '';
}"
не правельнее было бы вот так:

Код: Выделить всё

'whenClient' => function (attribute, value) {
      return $('#transfer-company_id').val() == '';
}
Аватара пользователя
Alexum
Сообщения: 683
Зарегистрирован: 2016.09.26, 10:00

Re: Проблема с добавлением валидации поля.

Сообщение Alexum »

leonenco писал(а): 2019.08.09, 12:10 а почему вы функцию квотите?
Он квотит, т.к. 'whenClient' принимает на вход строку с JS-кодом.
Закрыто