@dantemante

Почему форма не проходит валидацию в Yii2?

Здравствуйте.
Столкнулся с такой проблемой.
Указал в rules
[['formFile'], 'file', 'extensions' => 'jpg', 'skipOnEmpty' => false]

и теперь поле fileInput не проходит валидацию, потому что якобы я не загрузил файл (хотя на самом деле загрузил).
Если убрать эту валидацию и сделать

[['formFile'], 'file', 'extensions' => 'jpg', 'skipOnEmpty' => true]

всё отрабатывает, как надо, и файл сохраняется.

В контроллере:

private function uploadPromoFile($model)
{
// Получаем папку для загрузки файла

$uploadPath = $this->module->getUploadPath();
$model->formFile = UploadedFile::getInstance($model, 'formFile');

if (!$model->formFile) {
return false;
}
// Формируем имя файла
$imageName = md5_file($model->formFile->tempName) . '.' . $model->formFile->extension;

// Формируем полный абсолютный путь до файла
$absoluteFilePath = $uploadPath . '/'. $imageName;

// Загружаем файл
$model->formFile->saveAs($absoluteFilePath, false);

return $imageName;
}

Помогите, пожалуйста, разобраться.
  • Вопрос задан
  • 400 просмотров
Пригласить эксперта
Ответы на вопрос 2
Используйте 'extensions' => 'png, jpg, jpeg, gif'. И имейте в виду, что jpg и jpeg разные расширения для валидации изображений. А для ошибок есть $model->errors. В этом массиве найдете, то что вам нужно)
Ответ написан
Комментировать
@webmister
Также проверьте метод beforeValidate(), если он у Вас объявлен в модели. И убедитесь в том, что он возвращает TRUE.
public function beforeValidate(){
      //some code

     return parent::beforeValidate();
}
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы