Chernichko
@Chernichko
Учусь.

Как проверять обязательное поле input[type=file] в форме игнорируя $_FILES?

Форма содержит текстовые поля и загрузки файлов. Наличие файлов должно быть обязательным условием. Но если я хочу обновить элемент, то валидатор требует повторной загрузки файла, хотя он уже сохранен.
Правила
public function rules()
    {
        return [
            [['name', 'code'], 'required'],
            [['status', 'difficulty', 'new'], 'integer'],
            [['file'], 'file', 'extensions' => ['jpg', 'png', 'jpeg'], 'checkExtensionByMimeType' => false],
//            [['file'], 'validateImage', 'skipOnEmpty' => false, 'skipOnError' => false],
//            [['file'], 'required', 'whenClient' => function ($model) {return empty($model->new_img);}],
        ];
    }

В закомментированных строках я пробовала донести валидатору, что файл обязательное поле только если нет ранее загруженного файла.

Вот так прописано поле в форме
if(isset($model->file) && file_exists(Yii::getAlias('@app/web/upload/files', $model->file)))
    { 
        echo Html::img('/upload/files/thumbs/'.$model->file, ['class'=>'img-responsive']).'<br>';
    }
 echo $form->field($model, 'file')->fileInput(['value' => '']) ?>


Как мне сделать нужное условие для валидатора, чтобы он проверял на обязательность если нет уже сохраненного файла?
  • Вопрос задан
  • 96 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы