Для ajax валидации:
1. В
ActiveForm::begin() нужно добавить
'enableAjaxValidation' => true во view,
2. В контроллере добавить конструкцию для ajax валидации:
if (Yii::$app->request->isAjax && $model->load(Yii::$app->request>post())) { // если получаем AJAX и POST запрос
return ActiveForm::validate($model); // выполняем валидацию формы
}
Для ajax отправки:
3. Для отправки формы через ajax я всегда пишу свои js скрипты, где я делаю для кнопки
preventDefault(),
собираю данные из формы и отправляю
ajax запросом, - тут главное кроме всех данных формы собрать и
__csrf-token и передать его в запросе, иначе бэкэнд просто выбросит запрос как невалидный и не обработает его.
Для popup закртыия:
4. Закрыть popup легко, я так понимаю, Вы будете использовать бутстраповский. Т.е. код клика по сабмит кнопке должен быть примерно такой:
$('.submit-button).click(function(e){
e.preventDefault();
// отправка аякса и потом:
$('#popupselector').modal('hide');
});