yiiActiveForm validate SecurityError

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Dark Gard
Сообщения: 79
Зарегистрирован: 2016.06.06, 11:39

yiiActiveForm validate SecurityError

Сообщение Dark Gard »

Есть не сколько проблем, которые не могу разрешить.
Разъясните плиз.

Хочу открыть страницу (form/index). На нее по методу GET с другого url (form/update) подтянуть форму редактирования. Но по нажатии submit отправить POST на form/update и результат отобразить на все том же form/index.
Для реализации этой классики использую JS (фрагмент JS поддтягивания опускаю, с ним все хорошо):

Код: Выделить всё

 $('#form').on('beforeSubmit', function () {
        $.ajax( {
            url: '/form/update,
            type: 'POST',
            data: new FormData( $('#form')[0] ),
            processData: false,
            contentType: false,
            success: function(data) {
                $("#form-content").html(data);
             },
             error:  function(xhr, str){
                 alert('Возникла ошибка: ' + xhr.responseText);
             }
        } );
      return false;
    })
Контроллер form/update отдает форму через renderAjax.
Ну собственно проблемы:
1) Использование new FormData( $('#form')[0] ) необходимо, поскольку $('#form').serialize() не подтягивает файлы (у формы задано 'enctype' => 'multipart/form-data').
2) Данный код для некоторых правил валидаций на стороне клиента yiiActiveForm('validate') падает с SecurityError, тем самым до обработки beforeSubmit дело не доходит. и мы редиректимся на form/update по стандартному submit-у, что нам не надо.

Все это мне напоминает какой-то костыль.
Может кто-ни будь знает более правильный путь?
Последний раз редактировалось Dark Gard 2017.11.04, 13:38, всего редактировалось 2 раза.
Dark Gard
Сообщения: 79
Зарегистрирован: 2016.06.06, 11:39

Re: yiiActiveForm validate SecurityError

Сообщение Dark Gard »

Есть конечно кардинальное решение отказаться от вализации на стороне клиента ActiveForm::begin([..., 'enableClientValidation'=>false,])
Но возможно ли все же сохранить вальвацию на стороне клиента?
И это так и не поможет с не работающим $('#form').serialize().
Ответить