Валидация

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Evg
Сообщения: 6
Зарегистрирован: 2018.04.16, 07:10

Валидация

Сообщение Evg »

Пытаюсь провести валидацию формы

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

    <?php $form = ActiveForm::begin([ ]);;?>
          <?=$form->field($model,'fio')->textInput()?>
                  <div class="form-group">
            <?= Html::submitButton('Сохранить', ['class' => 'btn btn-success', 'id'=>'save_edit']) ?>
        </div>
        <?php ActiveForm::end(); ?>
        
Элемент валидации

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

  public function rules()
    {
        return [
            [['status','client', 'work', 'cartridge', 'sum', 'calculation', 'toner', 'toner_count', 'photoconductor', 'photoconductor_count', 'accepted', 'executor'], 'integer'],
            [['date_receipt', 'date_completion', 'date_payment', 'date_paybeck'], 'safe'],
            ['sum','required'],
            [['comment'], 'string'],
    	    [ 'fio', 'checkFIO'],
            ['status','checkStatus'],
            ['toner','checkToner'],
            ['toner_count','checkTonerCount'],
            ['sum','checkSum'],
        ];
    }
   
       public function checkFIO($attribute, $params, $model) {
        if((empty($this->fio)||($this->fio==null))&&($this->client == 1)) {
            $this->addError($attribute, 'Нужно указать ФИО клиента');
        }
    }   
    
После того как отправляю пустое значение поля ФИО и выбираю this->client значение равное 1 то форма все равно проходит валидацию и отправляется, при этом если я поставлю условие $this->fio=='условие отличное от null' и присылаю в форме значение из условия то валидация не проходит. В бд висит пустое значение но не null, а если эту функцию вообще не использую то приходит null
Пробовал обращаться через $this->fio, $model->fio, $attribute

Так же вопрос по
if ($model->validate()) {} else {}
специально нарушаю условие но все равно выполняется условие как будто валидация истина
Аватара пользователя
maleks
Сообщения: 1992
Зарегистрирован: 2012.12.26, 12:56

Re: Валидация

Сообщение maleks »

Для проверок на обязательность есть required валидатор.

И обратите внимание на skipOnEmpty св-во валидаторов, по умолчанию оно включено
Evg
Сообщения: 6
Зарегистрирован: 2018.04.16, 07:10

Re: Валидация

Сообщение Evg »

maleks писал(а): 2018.04.20, 07:04 Для проверок на обязательность есть required валидатор.

И обратите внимание на skipOnEmpty св-во валидаторов, по умолчанию оно включено
Касаемо required то поле не всегда обязательно =)
А вот skipOnEmpty и впрямь помог, большое спасибо
Аватара пользователя
maleks
Сообщения: 1992
Зарегистрирован: 2012.12.26, 12:56

Re: Валидация

Сообщение maleks »

Для "не всегда" имеется when св-во
Ответить