/ / Неоднозначність в перевірці CAactiveForm ajax - php, yii

Неоднозначність в перевірці ajaphs CActiveForm - php, yii

В API Doc Приклад для CActiveForm:

Щоб відповісти на запити перевірки AJAX, нам потрібен наступний код класу:

public function actionCreate()
{
$model=new User;
$this->performAjaxValidation($model);
if(isset($_POST["User"]))
{
$model->attributes=$_POST["User"];
if($model->save())
$this->redirect("index");
}

$this->render("create",array("model"=>$model));
}

protected function performAjaxValidation($model)
{
if(isset($_POST["ajax"]) && $_POST["ajax"]==="user-form")
{
echo CActiveForm::validate($model);
Yii::app()->end();
}
}

Моє запитання: що говорить цей код: $_POST["ajax"]==="user-form"? Я змінив його $_POST["ajax"]==="xxxzzz" але сценарій спрацював! Це необхідно?


Мій код був неправильний.

The if(isset($_POST["ajax"]) && $_POST["ajax"]==="xxx-zzz") вираз дійсно. Причиною виконання перевірки було ще, у наступних рядках я виконав перевірку таким чином:

$model = new User;
$this->performAjaxValidation($model,"xxx-zzz"); //here don"t perform Ajax validation
.
.
.
if(!$validate){
$this->performAjaxValidation($model,"user-form"); // here Ajax validation will performed
.
.
.
}

Відповіді:

1 для відповіді № 1

$ _POST ["ajax"] містить ідентифікатор форми, поданої для перевірки ajax. Візьміть з того, що ви хочете.

Як ви в документації для CActiveForm::validate() вона завантажує модель з POST-даних, і $ _POST ["ajax"] ніколи не використовується, тому ви, ймовірно, можете видалити її, якщо хочете.

Це добре, щоб переконатися, що ви не "t ajax перевірити форму, яку ви не маєте намір перевірити, хоча.