Здравствуйте. Сделал ajax валидацию посредством CActiveForm.
View:
<?php
$form = $this->beginWidget('CActiveForm', array(
'id' => 'form',
'enableAjaxValidation' => true,
'enableClientValidation' => true,
'focus' => array($ad, 'title'),
'clientOptions' => array(
'validateOnSubmit' => true,
'validateOnChange' => false,
'hideErrorMessage' => true,
'afterValidate' => 'js:validateForm',
),
));
?>
Js:
function validateForm(form, data, hasError) {
if (hasError) {
$.each(data, function(i, el) {
$('#' + i).addClass('error');
});
}
}
Controller:
public function actionCreate() {
$this->layout = 'main';
$this->pageTitle .= 'Создать объявление';
$ad = new Ad;
$this->performAjaxValidation($ad);
$categories = Category::dropdownList('company');
if (isset($_POST['Ad'])) {
$ad->attributes = $_POST['Ad'];
if ($ad->save()) {
$this->redirect($this->createUrl('view', array('id' => $ad->id)));
}
}
$this->render('create', array(
'ad' => $ad,
));
}
protected function performAjaxValidation($model) {
if (isset($_POST['ajax']) && $_POST['ajax'] === 'form') {
echo CActiveForm::validate($model);
Yii::app()->end();
}
}
Мне необходимо сделать, чтоб валидация происходила через ajax, но в случае положительного ответа, форма отправлялась обычным образом. Подскажите как это реализовать.