Как обновить таблицу после дабавления записи ajax -ом?

Чтобы обновить таблицу после добавления записи с использованием AJAX-запроса в Yii, необходимо выполнить несколько шагов.

1. Во-первых, вам нужно создать действие в контроллере, которое будет обрабатывать AJAX-запрос и добавлять новую запись в базу данных.

public function actionCreate()
{
    $model = new ModelName();

    if ($model->load(Yii::$app->request->post()) && $model->save()) {
        // Если модель успешно сохранена, возвращаем ответ в формате JSON
        return Json::encode(['success' => true]);
    }

    // Если сохранение не удалось, возвращаем ответ с ошибкой
    return Json::encode(['success' => false, 'errors' => $model->errors]);
}

2. Затем вам нужно создать представление для добавления записи с использованием формы. В этой форме вы также должны добавить JavaScript-код для обработки AJAX-запроса и обновления таблицы после успешного добавления записи.

use yiihelpersHtml;
use yiiwidgetsActiveForm;
use yiihelpersUrl;

// Открываем форму
$form = ActiveForm::begin([
    'id' => 'create-form',
    'action' => Url::to(['controller/create']),
    'options' => ['class' => 'ajax-form'],
    'enableAjaxValidation' => true,
    'validationUrl' => Url::to(['controller/validate']),
]);

// Определяем поля формы
echo $form->field($model, 'field1')->textInput();
echo $form->field($model, 'field2')->textInput();

// Добавляем кнопку отправки формы
echo Html::submitButton('Create', ['class' => 'btn btn-success']);

// Закрываем форму
ActiveForm::end();

// JavaScript-код для обработки AJAX-запроса и обновления таблицы
$this->registerJs('
    $("form.ajax-form").on("beforeSubmit", function(event) {
        var form = $(this);
        var formData = form.serialize();

        $.ajax({
            url: form.attr("action"),
            type: "post",
            data: formData,
            success: function(response) {
                var data = $.parseJSON(response);

                if (data.success) {
                    // Если запись успешно добавлена, выполняем следующие действия:
                    // 1. Обновляем таблицу
                    // 2. Очищаем поля формы
                    // 3. Скрываем форму добавления записи

                    // Обновляем таблицу
                    $.pjax.reload({container:"#table-container"});

                    // Очищаем поля формы
                    form.trigger("reset");

                    // Скрываем форму
                    form.closest(".modal").modal("hide");
                } else {
                    // Если произошла ошибка при добавлении записи, выводим сообщение об ошибке
                    alert("An error occurred: " + data.errors);
                }
            }
        });

        return false;
    });
');

3. Наконец, у вас должна быть таблица, которую нужно обновить после успешного добавления записи. Для этого вы можете использовать виджет Yii2 Pjax.

use yiihelpersHtml;
use yiigridGridView;
use yiiwidgetsPjax;

Pjax::begin(['id' => 'table-container']);
echo GridView::widget([
    'dataProvider' => $dataProvider,
    'columns' => [
        'column1',
        'column2',
        // Другие столбцы...
    ],
]);
Pjax::end();

Как только форма будет отправлена и новая запись будет успешно добавлена в базу данных, таблица будет обновлена с использованием Pjax, и вы увидите новую запись в таблице.