Yii2 activeform ajax submit and validation

后端 未结 3 1951
北恋
北恋 2021-02-04 09:50

Currently to achieve ajax submit and validation at the same time. I\'m using custom function like:

    $(\'.edit_form\').submit(function (e) {
        e.preventD         


        
3条回答
  •  一个人的身影
    2021-02-04 10:24

    Here I've find some interesting javascript-side validation tricks

    So, a javascript submit button can be as:

    $('body').on('click', '#submit', function(e) {
      e.preventDefault();
      var yiiform = $('#my-form');
      $.ajax({
        type: yiiform.attr('method'),
          url: yiiform.attr('action'),
          data: yiiform.serializeArray(),
          success: function(data) {
            if(data.success == 'true') {
              window.location.href = 'http://my.success.page';
            } else {
              // here there is (maybe) the right way to trigger errors
              $.each(data, function(key, val) {
                yiiform.yiiActiveForm('updateAttribute', key, [val]);
              });
            }
          }
      });
    }
    

    triggered by:

     Yii::t('app', 'Submit'),
         'options' => [
            'id'=>'submit',
            'class' => 'btn btn-primary pull-right',
         ]]);?>
    

    And the action controller will reply with:

    ...
    if ($model->load(Yii::$app->request->post())) {
        Yii::$app->response->format = Response::FORMAT_JSON;
        if($model->save()) {
            return ['success'=>'true'];
        } else {
            return ActiveForm::validate($model);
        }
    }
    ...
    

    Details about ActiveForm::validate() can be found here

提交回复
热议问题