Yii2 activeform ajax submit and validation

后端 未结 3 1945
北恋
北恋 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:33

    you can use AjaxSubmitButton.

    Your form should b

    $form = ActiveForm::begin([
        'id' => "some_form",
        'action' => 'javascript:void(0)',
        'options' => ['class' => 'edit_form'],
    ]);
    

    use AjaxSubmitButton here

    AjaxSubmitButton::begin([
                                    'label' => 'Submit',
                                    'id' => 'some_form',
                                    'ajaxOptions' => [
                                        'type' => 'POST',
                                        'url' => \yii\helpers\Url::to(['/user/edit']),
                                        'success' => new \yii\web\JsExpression(
                                                'function(data){
                                                    if(data=="success")
                                                        {
                                                        }else{
                                                            $.each(data, function(key, val) {
                                                                $("#"+key).after("
    "+val+"
    "); $("#"+key).closest(".form-group").addClass("has-error"); }); } }' ), ], 'options' => ['class' => 'btn btn-success', 'type' => 'submit'], ]); AjaxSubmitButton::end();

    In your controller

    public function actionEdit()
    {
         $model = new User;
         if($model->save())
         {
            $result = 'success';
            Yii::$app->response->format = trim(Response::FORMAT_JSON);
                    return $result;
         }else{
             $error = \yii\widgets\ActiveForm::validate($model);
                    Yii::$app->response->format = trim(Response::FORMAT_JSON);
                    return $error; 
         }
    }
    

提交回复
热议问题