@alex99505

Почему ошибочно не валидируется поле с типом file?

Вывожу форму, загружаю успешно файл, но при редактировании модели у которой уже есть файл сохраненный оно не дает сохранить, так как "не выбран файл". Валидация модели стоит [[ 'image'], 'required'],

$form = ActiveForm::begin(['id' => 'form_sponsor_main']);
                            echo $form->field($model, 'link', ['options' => ['style' => 'width: 500px;']]);
                            echo $form->field($model, 'image')->fileInput(['id'=>'image']);
 ActiveForm::end();


В чем может быть причина?

За работу с изображениями отвечает модель:
class UploadForm extends Model
{
    /**
     * @var UploadedFile
     */
    public $imageFile;
    public $imageName;

    public function rules()
    {
        return [
            [['imageFile'], 'file', 'skipOnEmpty' => false],
        ];
    }

    public function upload($path, $name = null)
    {
        if ($this->validate()) {
           $this->imageFile->saveAs($path .'/'.$name);
            return true;
        } else {
            return false;
        }
    }
}
  • Вопрос задан
  • 49 просмотров
Пригласить эксперта
Ответы на вопрос 1
TheRikipm
@TheRikipm
Backend middle
Попробуйте изменить
$form = ActiveForm::begin(['id' => 'form_sponsor_main'])

Следующим образом
$form = ActiveForm::begin(
        [
            'id' => 'form_sponsor_main'
            'options' => [
                'enctype'=>'multipart/form-data',
            ]
        ]
    );


Возможно файл через POST вообще не передается т.к. enctype не тот.

На будущее: если встречаетесь с подобной ошибкой смотрите через DevTools что идет на сервер и прикладывайте к вопросу
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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