ajax yii2 active-form

submit ajax yii2



Yii2-ActiveForm ajax submit (2)

¿Cómo puedo usar ActiveForm con estos requisitos?

  • Presentar formulario con ajax.

  • Antes de enviar con ajax: compruebe si existe un error.

  • Después de enviar: Muestra el error del campo debajo de la entrada del campo si el servidor responde sin éxito el resultado de guardado.


Este es tu formulario a la vista. Prefiero usar diferentes acciones para validar y guardar. Puedes unirlos en un solo método.

<?php $form = /yii/widgets/ActiveForm::begin([ ''id'' => ''my-form-id'', ''action'' => ''save-url'', ''enableAjaxValidation'' => true, ''validationUrl'' => ''validation-rul'', ]); ?> <?= $form->field($model, ''email'')->textInput(); ?> <?= Html::submitButton(''Submit''); ?> <?php $form->end(); ?>

En la acción de validación debes escribir. Valida su formulario y devuelve la lista de errores al cliente. :

public function actionValidate() { $model = new MyModel(); $request = /Yii::$app->getRequest(); if ($request->isPost && $model->load($request->post())) { /Yii::$app->response->format = Response::FORMAT_JSON; return ActiveForm::validate($model); } }

Y esto es guardar acción. En validar los datos de entrada para la seguridad:

public function actionSave() { $model = new MyModel(); $request = /Yii::$app->getRequest(); if ($request->isPost && $model->load($request->post())) { /Yii::$app->response->format = Response::FORMAT_JSON; return [''success'' => $model->save()]; } return $this->renderAjax(''registration'', [ ''model'' => $model, ]); }

Este código validará su formulario en actionValidate () y. Para enviar su formulario a través de AJAX utilice el evento beforeSubmit. En tu archivo javascript escribe:

$(document).on("beforeSubmit", "#my-form-id", function () { // send data to actionSave by ajax request. return false; // Cancel form submitting. });

Eso es todo.


Presentar formulario con ajax. Antes de enviar con ajax: compruebe si existe un error. yii muestra error si hay alguno por defecto ....... :)

use yii/helpers/Html; use yii/bootstrap/ActiveForm; use yii/widgets/Pjax; /* @var $this yii/web/View */ /* @var $model backend/models/search/JobSearch */ /* @var $form yii/bootstrap/ActiveForm */ ?> <div class="job-search"> <?php $form = ActiveForm::begin([ ''action'' => [''index''], //''method'' => ''get'', ''options'' => [''id'' => ''dynamic-form111''] ]); ?> <?php echo $form->field($searchModel, ''id'') ?> <?php echo $form->field($searchModel, ''user_id'') ?> <?php echo $form->field($searchModel, ''com_id'') ?> <?php echo $form->field($searchModel, ''job_no'') ?> <?php echo $form->field($searchModel, ''court_id'') ?> <?php // echo $form->field($model, ''case_no'') ?> <?php // echo $form->field($model, ''plainttiff'') ?> <?php // echo $form->field($model, ''defendant'') ?> <?php // echo $form->field($model, ''date_fill'') ?> <?php // echo $form->field($model, ''court_date'') ?> <?php // echo $form->field($model, ''status_id'') ?> <?php // echo $form->field($model, ''created_at'') ?> <?php // echo $form->field($model, ''updated_at'') ?> <div class="form-group"> <?php echo Html::submitButton(''Search'', [''class'' => ''btn btn-primary'',''id''=>''submit_id'']) ?> <?php echo Html::resetButton(''Reset'', [''class'' => ''btn btn-default'']) ?> </div> <?php ActiveForm::end(); ?> </div> <script type="text/javascript"> $(document).ready(function () { $(''body'').on(''beforeSubmit'', ''form#dynamic-form111'', function () { var form = $(this); // return false if form still have some validation errors if (form.find(''.has-error'').length) { return false; } // submit form $.ajax({ url : form.attr(''action''), type : ''get'', data : form.serialize(), success: function (response) { var getupdatedata = $(response).find(''#filter_id_test''); // $.pjax.reload(''#note_update_id''); for pjax update $(''#yiiikap'').html(getupdatedata); //console.log(getupdatedata); }, error : function () { console.log(''internal server error''); } }); return false; }); }); </script>