Как отправить данные из формы при помощи ajax и обработать их в контроллере?

Чтобы отправить данные из формы при помощи Ajax и обработать их в контроллере Yii, вам понадобится несколько шагов.

Шаг 1: Создание формы
Создайте форму на вашей веб-странице с помощью HTML-тега <form>. Убедитесь, что у формы есть id, по которому вы сможете ее идентифицировать в JavaScript.

<form id="my-form">
  <input type="text" name="name" />
  <input type="text" name="email" />
  <button type="submit">Отправить</button>
</form>

Шаг 2: Обработчик события отправки формы
Добавьте обработчик события отправки формы в JavaScript, который будет выполнять Ajax-запрос на сервер. Здесь мы используем библиотеку jQuery для упрощения работы с Ajax.

$(document).ready(function() {
  $('#my-form').submit(function(event) {
    event.preventDefault(); // Отключает перезагрузку страницы при отправке формы

    var formData = $(this).serialize(); // Сериализуем данные формы

    $.ajax({
      url: '/controller/action', // Путь к вашему контроллеру и действию
      type: 'POST',
      data: formData,
      success: function(response) {
        console.log(response); // Обработка успешного ответа
      },
      error: function(xhr) {
        console.log(xhr.responseText); // Обработка ошибки
      }
    });
  });
});

Шаг 3: Создание контроллера и действия
Создайте контроллер и действие, которое будет обрабатывать данные формы. В контроллере вы можете получить данные из формы с помощью объекта $_POST или Yii::$app->request->post().

namespace appcontrollers;

use yiiwebController;

class MyController extends Controller
{
  public function actionMyAction()
  {
    $name = $_POST['name']; // Получаем значение из формы
    $email = $_POST['email'];

    // Делайте что-то с данными (например, сохраните их в базе данных)

    return 'Success'; // Возвращает успешный ответ
  }
}

Шаг 4: Настройка маршрута
Необходимо настроить маршрут в файле config/web.php, чтобы указать Yii, какой контроллер и действие обрабатывают данный запрос.

return [
  // другие настройки...

  'components' => [
    // другие компоненты...

    'urlManager' => [
      'enablePrettyUrl' => true,
      'showScriptName' => false,
      'rules' => [
        // другие правила...

        '/controller/action' => 'my-controller/my-action',
      ],
    ],
  ],
];

Теперь, когда вы отправляете форму, данные будут отправляться на сервер при помощи Ajax, а контроллер Yii будет обрабатывать эти данные и выполнять необходимую логику.