1. Кнопка Save тут ни причем.
2. У модели есть 2 метода $model->save() и $model->validate()
$model->save() - сохраняет и валидирует
$model->validate() - только валидирует данные.
У вас должно быть немного иначе:
if ($model->validate()) {
///здесь ваш код
$model->save()
пишем данные, закрываем модалку
} else {
выводим результат валидации (рендерим аякс? или встроенная валидация?)
}
}
С загрузкой данных из формы
if ($model->load(Yii::$app->request->post()) && $model->validate()) {
///code
$model->save()
}
Валидацию вы выбираете сами. Я думаю, что простые правила валидации валидируются ajax. А сложные уже после нажатия кнопки и запроса на сервер. Например, длину текста валидируем на клиенте. А сложную логику после запроса
Вопрос: как мне в контроллере проверить, что была нажата кнопка Save в форме?
Зачем вам проверять нажата ли кнопка? Это вопрос JS. А в контроллере вы смотрите на переданные данные из формы. Если они есть, то вы их обрабатываете. Если их нет, то вы показываете форму.