Ситуация такая. Создал форму через ActiveRecord, она отправляется через ajax (есть обработчик на JQuery). Проблема в том, что там есть обязательные поля, без которых форма не должна отправляться. Но с ajax-обработчиком она отправляется в любом случае, а без него все работает как положено.
Код формы:
<?php $form = ActiveForm::begin([
'id' => 'write-review-form',
'action' => '/admin/send-mails/send-review',
]) ?>
<?= $form->field($review, 'firstname')->textInput(['placeholder' => 'Имя'])->label('') ?>
<?= $form->field($review, 'lastname')->textInput(['placeholder' => 'Фамилия (по желанию)'])->label('') ?>
<?php
$year = 1998;
$endYear = (int)date('Y');
$yearItems = [];
while ( $year <= $endYear ) {
$yearItems[$year] = $year;
$year += 1;
}
?>
<?= $form->field($review, 'since_year')->dropDownList($yearItems)->label('С какого года пользуетесь нашими услугами?') ?>
<?= $form->field($review, 'review')->textarea(['rows' => 5, 'placeholder' => 'Ваш отзыв'])->label('') ?>
<?= $form->field($review, 'verifyCode')->widget(Captcha::className(), [
'template' => '<div class="row"><div class="col-lg-3">{image}</div><div class="col-lg-6" style="padding-top: 10px;">{input}</div></div>',
]) ?>
<div class="form-group">
<?= Html::submitButton('Отправить', ['class' => 'btn btn-default send-review']) ?>
</div>
<?php ActiveForm::end(); ?>
Код обработчика:
$(function(){
var $form = $("#write-review-form");
$form.submit(submitForm);
function submitForm(e){
e.stopImmediatePropagation();
var $form = $(this),
$writeReview = $("#write-review");
$.ajax({
type: 'POST',
url: $form.attr('action'),
data: $form.serialize(),
dataType: 'json',
success: function(data){
console.log(data);
$writeReview.modal('hide');
}
});
return false;
}
});
В чем может быть дело?