Я создал виджет с CActiveForm в нем. Все работает нормально, но теперь я хочу включить проверку ajax для него.Использование performAjaxValidation внутри виджета (Yii)
Проблема заключается в том, что вывод моей проверки ajax содержит, помимо строки JSON проверки, все (и ее часть, так как Yii::app()->end()
останавливает остальные) моего html. Не странно, потому что я использую его внутри виджета, и запрос проверки выполняется для контроллера/действия, где я разместил этот виджет.
Есть ли способ предотвратить вывод всех html, поэтому возвращается действительная строка JSON?
Я уже пытался установить validationUrl
в CActiveForm другому контроллеру/действию, но проблема в том, что я должен отправить модель с ней, и эта модель определяется в моем виджете, а не в validationUrl.
Widget:
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."]}