我创建了一个带有 CActiveForm 的小部件。一切正常,但现在我想为其启用 ajax 验证。
问题是我的 ajax 验证的输出除了包含验证 JSON 字符串之外,还包含Yii::app()->end()
我的 html 的所有(以及它的一部分,因为停止了其余部分)。并不奇怪,因为我在一个小部件中使用它并且验证请求是对我放置这个小部件的控制器/动作完成的。
有什么方法可以防止输出所有的 html,所以返回一个有效的 JSON 字符串?
我已经尝试将validationUrl
CActiveForm 中的
小部件:
public function run()
{
$model = new User;
$model->scenario = 'create';
$this->performAjaxValidation($model);
if (isset($_POST['User'])) {
$model->attributes = $_POST['User'];
if ($model->save()) {
}
}
$this->render('register-form', array(
'model' => $model
));
}
/**
* Performs the AJAX validation.
* @param User $model the model to be validated
*/
protected function performAjaxValidation($model)
{
if(isset($_POST['ajax']))
{
echo CActiveForm::validate($model);
Yii::app()->end();
}
}
performAjaxValidation() 的输出(ajax 调用):
.. more html here ..
<section class="box">
<h1>Register form simple</h1>
{"UserPartialSignup_email":["Email is geen geldig emailadres."]}