Задать вопрос
@teodor7teodor7

Как исправить ошибку в yii2 при волидации файла?

Не понятно в чем ошибка кто сталкивался.
форма
<?php
    $form = ActiveForm::begin([
                'id' => $model->formName(),
                'enableAjaxValidation' => true,
                'validationUrl' => Url::toRoute('validation-certificate-form'),
                'action' => Url::toRoute('certificate-form'),
                'options' => ['enctype' => 'multipart/form-data'],
        
    ]);
    ?>

public function rules() {
        return [
                [[
          'club_id',
 
            ], 'required'],
                ['certificate_code', 'unique', 'targetClass' => '\common\models\Certificate'],
   [['certificate_file'], 'file', 'extensions' => ['png', 'jpg'], 'skipOnEmpty' => false ]
        ];
    }

public function actionCertificateForm() {

        $modelCertificateForm = new CertificateForm();

        if ($modelCertificateForm->load(Yii::$app->request->post())) {

            $modelCertificateForm->certificate_file = UploadedFile::getInstance($modelCertificateForm, 'certificate_file');


            if ($modelCertificateForm->validate()) {

                if ($modelCertificateForm->save() && $modelCertificateForm->upload()) {


                    Yii::$app->session->setFlash('success', 'Сертификат успешно создан.');
                    return $this->refresh();
                } else {
                    var_dump($modelCertificateForm->upload())  ; die();
                    Yii::$app->session->setFlash('error', 'Ошибка сохранения сертификата.');
                    return $this->render('index', ['model' => $modelCertificateForm]);
                }
            } else {
                return $this->render('index', ['model' => $modelCertificateForm]);
            }
        } else {
            return $this->render('index', ['model' => $modelCertificateForm]);
        }
    }


при добавление файла высвечивается добавте файл. После дого как убираем 'enableAjaxValidation' => true, валидацию на стороне клиента все норм. Как это поченить? или убрать Ajax валидацию для файла?
  • Вопрос задан
  • 150 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
При ajax валидации файл не передается, поэтому ошибка.
Я думаю проблема в том, что вы не правильно загружаете файл. Вам надо иметь в модели публичную переменную file в которую будет попадать сам файл, убрать с нее 'skipOnEmpty' => false, а certificate_file задать валидатор string в который будет попадать имя файла и вот его сделать обязательным, так как в базу у Вас будет попадать именно имя, а не весь файл.
Пример тут:
www.yiiframework.com/doc-2.0/guide-input-file-uplo...
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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