CActiveForm を含むウィジェットを作成しました。すべて正常に動作しますが、今は ajax 検証を有効にしたいと考えています。
問題は、ajax 検証の出力に、検証 JSON 文字列に加えてYii::app()->end()
、html のすべて (残りを停止するため、その一部) も含まれていることです。ウィジェット内で使用していて、このウィジェットを配置したコントローラー/アクションに対して検証要求が行われるため、奇妙ではありません。
有効な JSON 文字列が返されるように、すべての html を出力しないようにする方法はありますか?
私はすでにvalidationUrl
CActiveForm の を別のコントローラー/アクションに設定しようとしましたが、問題はモデルを送信する必要があり、このモデルはvalidationUrlではなくウィジェットで決定されることです。
ウィジェット:
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."]}