Как обработать форму для шаблона страницы (layouts/main.php)?

Для обработки формы в шаблоне страницы (layouts/main.php) в Yii фреймворке можно использовать следующий подход:

1. Создание формы в шаблоне:
В вашем файле шаблона (layouts/main.php) вставьте код, который отобразит форму. Например, вы можете использовать метод beginForm для открытия формы и endForm для ее закрытия. Внутри формы вы можете добавить нужные поля и кнопки для отправки данных.

Пример:

   <?php $form = ActiveForm::begin(); ?>
   
   <?= $form->field($model, 'attribute1')->textInput() ?>
   <?= $form->field($model, 'attribute2')->textInput() ?>
   
   <div class="form-group">
       <?= Html::submitButton('Submit', ['class' => 'btn btn-primary']) ?>
   </div>
   
   <?php ActiveForm::end(); ?>

2. Обработка данных из формы:
Когда форма отправляется, данные будут переданы на соответствующий контроллер и действие для обработки. В вашем контроллере вы должны добавить метод обработки этих данных. В методе действия вы можете получить данные из формы, проверить их и выполнить необходимую логику.

Пример:

   public function actionSubmitForm()
   {
       $request = Yii::$app->request;
       
       if ($request->isPost) {
           $model = new MyFormModel(); // Создайте модель формы соответствующую вашим требованиям
           $model->load($request->post());
           
           if ($model->validate()) {
               // выполните действия, когда данные формы корректны
               // например, сохраните данные в базу данных
               
               return $this->redirect(['site/success']); // перенаправьте пользователя на страницу подтверждения после обработки формы
           }
       }
       
       return $this->redirect(['site/error']); // перенаправьте пользователя на страницу ошибки, если форма не была отправлена
   }

3. Настройка маршрута и ссылки на обработчик:
Чтобы отправить форму на указанное действие контроллера, необходимо настроить соответствующий маршрут и ссылку в шаблоне страницы. Для этого вы можете использовать метод Url::to() для создания ссылки на действие контроллера.

Пример:

   <?php $form = ActiveForm::begin(['action' => Url::to(['site/submit-form'])]); ?>

В приведенном примере ссылка будет указывать на действие submitForm контроллера SiteController.

4. Отображение ошибок валидации:
Если ваши поля формы связаны с правилами валидации, то Yii автоматически проверит данные формы и выведет ошибки валидации. Вы можете использовать метод errorSummary для отображения общей информации об ошибках формы или метод error для отображения ошибки для определенного поля.

Пример:

   <?= $form->errorSummary($model) ?>
   
   <?= $form->field($model, 'attribute1')->textInput() ?>
   <?= $form->field($model, 'attribute2')->textInput() ?>

В приведенном примере метод errorSummary выведет общую информацию обо всех ошибках в модели формы, а метод error выведет ошибку для конкретного поля attribute1 и attribute2.

Это лишь основы обработки формы в шаблоне страницы (layouts/main.php) в Yii фреймворке. В зависимости от ваших требований и сложности формы, возможно потребуется дополнительная настройка и логика обработки.