在yii2中以pjax形式进行Ajax验证

时间:2016-08-03 17:45:04

标签: ajax model-view-controller yii2 yii2-advanced-app pjax

我正在使用像这样的pjax形式的ajax验证

<?php Pjax::begin(); ?> 
 <?php $form = ActiveForm::begin([
  'id' => 'address-details-form',                                
 'options' => ['class' => 'form-horizontal','data-pjax' => true,],
 'enableAjaxValidation'=>true,
  ]); ?>
 //My form
 <?php ActiveForm::end(); ?>
 <?php Pjax::end(); 

提交表单后,它会发布一些这样的模型数据

  

“personaldetails-manual_address_line1”:[“您必须输入地址行1”],“personaldetails-manual_address_line2”:[“您必须输入地址行2”],“personaldetails-manual_address_line3”:[“您必须输入地址行3”] ,“personaldetails-manual_address_line4”:[“你必须输入地址第4行”],

实际上这是我的模型规则为什么会发生。但我删除ajax验证意味着它工作正常,但我想要ajax验证

2 个答案:

答案 0 :(得分:0)

您必须在控制器中拥有此功能

if (Yii::$app->request->isAjax && $model->load(Yii::$app->request->post())) {
    Yii::$app->response->format = Response::FORMAT_JSON;
    return ActiveForm::validate($model);
}

这应该在你做完

之后
$model = new [ModelClass]();

在此处查看更多详情:http://www.yiiframework.com/doc-2.0/guide-input-validation.html#ajax-validation

答案 1 :(得分:0)

最后我得到了带有ajax验证的pjax表单。我在我的控制器中组合ajax就像这样

<jaxrs:server id="cxfFactory" address="/">
        <jaxrs:serviceBeans>
            <ref
                bean="defaultService" />
        </jaxrs:serviceBeans>

我不知道我的朋友ganasa向我建议是不是写错了。我的工作正常。