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

Как поправить ajax валидацию файлов yii2?

Есть ajax валидация формы.
мои rules
[['passport_photos', 'oversea_passport_photos'], 'required', 'on' => 'vip'],
            [['oversea_passport_photos', 'passport_photos'], 'file', 'skipOnEmpty' => false, 'extensions' => 'png, jpg', 'maxFiles' => 10]

контроллер
$model = new Client();
        $model->scenario = 'vip';

        if (Yii::$app->request->isAjax && $model->load(Yii::$app->request->post())) {
            Yii::$app->response->format = Response::FORMAT_JSON;
            return ActiveForm::validate($model);
        }

и форма
<?php $form = ActiveForm::begin([
            'action' => '/order/default/vip-form',
            'enableAjaxValidation' => true,
            'enableClientValidation' => false,
            'options' => [ 'enctype' => 'multipart/form-data']
        ]); ?>
        <?= $form->field($model, 'passport_photos[]' )->widget(FileInput::className(), [
            'options' => [
                'multiple' => true,
                'accept' => 'image/*'
            ],
            'pluginOptions' => [
                'allowedFileExtensions'=>[ 'jpg', 'png'],
                'uploadUrl' => 'false',
                'maxFileCount' => 10,
                'initialPreviewAsData' => true,
                'overwriteInitial' => false,
                'showRemove' => false,
                'showUpload' => false,
                'fileActionSettings' => [
                    'showUpload' => false
                ]
            ]
        ]) ?>
        <?= $form->field($model, 'oversea_passport_photos[]' )->widget(FileInput::className(), [
            'options' => [
                'multiple' => true,
                'accept' => 'image/*'
            ],
            'pluginOptions' => [
                'allowedFileExtensions'=>[ 'jpg', 'png'],
                'uploadUrl' => 'false',
                'maxFileCount' => 10,
                'initialPreviewAsData' => true,
                'overwriteInitial' => false,
                'showRemove' => false,
                'showUpload' => false,
                'fileActionSettings' => [
                    'showUpload' => false
                ]
            ]
        ]) ?>
        <?= Html::submitButton(Yii::t('layout', 'signup'), ['class' => 'btn btn-submit']) ?>
        <?php $form::end(); ?>

проблема в том, что не валидирует нормально ети поля, как исправить?
  • Вопрос задан
  • 383 просмотра
Подписаться 2 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Onskills
    PHP: базовый курс
    1 месяц
    Далее
  • teamcoding
    TC200PY Разработка PHP веб-приложений на Yii2. Шаблон приложения advanced
    3 месяца
    Далее
  • FructCode
    Yii2 Фреймворк
    2 месяца
    Далее
Решения вопроса 1
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
проблема в том, что не валидирует нормально ети поля, как исправить?

Что конкретно не так? Забыл дома магический шар.

Так же проверьте запрос. Если это ajax валидация, то там вряд ли передается файл, так что валидировать нечего. Повести проверку файла на клиент, 98% виджетов загрузки имеет такой функционал из коробки. Ну и придется в моделе сделать 'skipOnEmpty' =>true
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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