В CustomerController
у меня есть действие create
:
public function actionCreate() {
$model = new Customer;
$this->performAjaxValidation($model, 'customer-form');
//only support ajax saving
if (isset($_POST['Customer']) && Yii::app()->getRequest()->getIsAjaxRequest()) {
$model->setAttributes($_POST['Customer']);
$saveSuccess = $model->save();
if ($saveSuccess) {
//should echo a success message
}
else {
//should echo error messages
}
Yii::app()->end();
}
$this->render('create', array('customer' => $model));
}
В представлении я использую CActiveform:
$form = $this->beginWidget('CActiveForm', array(
'id' => 'customer-form',
'enableAjaxValidation' => true,
'clientOptions'=>array(
'validateOnSubmit'=>false
)
)
);
Как вы можете видеть,Я установил для enableAjaxValidation
значение true, но для параметров клиента validateOnSubmit
было установлено значение false.
Если установить значение true, при отправке формы сначала отправит AJAXPOST-запрос к серверу, а затем сервер вернет сообщения об ошибках (если они есть) в формате JSON, CActiveForm автоматически отобразит сводку ошибок в представлении и заблокирует отправку формы.
Если ошибка не найдена,Затем форма выполнит второй запрос POST (который не является AJAX) и фактически отправит форму.
Но это не то поведение, за которым я следую.
В идеалеЯ хотел бы иметь одиночный AJAX POST-запрос, чтобы при отправке формы сервер возвращал сообщение об успешном завершении или об ошибке и CActiveForm отображал их автоматически.
Это что-то встроенноев в Yii или я должен написать свои собственные коды, делая это?