Ajax валидация формы, загружаемой внутрь модалки

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
x516dF
Сообщения: 17
Зарегистрирован: 2017.07.11, 10:01

Ajax валидация формы, загружаемой внутрь модалки

Сообщение x516dF »

Добрый день. Стало необходимо реализовать стандартный CRUD на одной странице, с добавлением и редактированием записей через модальные окна. Возникла проблема с валидацией форм.
На индексной странице расположен стандартный gridView и модальные окна. Формы расположены в отдельных файлах в этой же папке.
Код формы:

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

<?php $form = ActiveForm::begin([
        'action' => Url::to(['/service/create']),
        'enableAjaxValidation' => true,
        'enableClientValidation' => false,
        'validationUrl' => Url::to(['/service/validate']),
]); ?>
...
Код модалки:

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

<?php
yii\bootstrap\Modal::begin([
    'options' => [
        'data-role' => 'modal-window',
    ],
    'clientOptions' => [
        'backdrop' => 'static',
        'keyboard' => FALSE
    ],
]);
?>
<?php yii\bootstrap\Modal::end();?>
В данную модалку загружается контент с формой, методом jQuery load из контроллера.
Из контроллера контент формы отдаётся примерно так:

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

public function actionCreate()
{
    $model = new Service();

    if ($model->load(Yii::$app->request->post()) && $model->save()) {
        return $this->redirect(Yii::$app->request->referrer);
    } else {
        return $this->renderAjax('create', [
            'model' => $model,
        ]);
    }
}
При такой работе на индексной странице при изменении данных в модалке форма не валидируется аяксом, даже не отправляется запрос на "/service/validate". Но если открыть страницу "/service/create" в адресной строке, то, само собой, всё работает. Как быть?
x516dF
Сообщения: 17
Зарегистрирован: 2017.07.11, 10:01

Re: Ajax валидация формы, загружаемой внутрь модалки

Сообщение x516dF »

Решение таки нашлось. Оказывается если на странице много форм и у каждой не указан свой уникальный id, то валидация работать не будет. Вопрос закрыт
Ответить