Для того чтобы модальное окно открывалось при переходе по ссылке на actionCreate в Yii, вам нужно выполнить следующие шаги:
1. Создайте основной вид, который будет содержать ссылку на создание записи. Для этого вам нужно создать файл index.php
находящийся в папке views/your-controller-name
, где your-controller-name
- название вашего контроллера. В файле index.php
добавьте следующий код:
<?php use yiihelpersHtml; // ... ?> <!-- Здесь можете разместить нужные вам элементы интерфейса, например таблицу с данными --> <!-- Ссылка для открытия модального окна --> <?= Html::a('Создать запись', ['create'], [ 'class' => 'btn btn-primary', 'data' => [ 'toggle' => 'modal', 'target' => '#modal-create', ], ]) ?> <!-- Модальное окно для создания записи --> <div class="modal fade" id="modal-create" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> <div class="modal-dialog"> <div class="modal-content"> <?= $this->render('_form', [ 'model' => $model, ]) ?> </div> </div> </div>
2. Создайте действие actionCreate
в вашем контроллере. Для этого вам нужно открыть файл контроллера, например YourController.php
, и добавить следующий код:
<?php namespace appcontrollers; use Yii; use appmodelsYourModel; use yiiwebController; class YourController extends Controller { // ... public function actionCreate() { $model = new YourModel(); // Если данные были успешно отправлены через модальное окно, сохраняем их в базу if ($model->load(Yii::$app->request->post()) && $model->save()) { // Действия в случае успешного сохранения // Закрываем модальное окно Yii::$app->session->setFlash('success', 'Запись успешно создана!'); return $this->redirect(['index']); } // Если форма не отправлена или есть ошибки, открываем модальное окно с формой для создания записи return $this->renderAjax('create', [ 'model' => $model, ]); } // ... }
3. Создайте файл _form.php
находящийся в папке views/your-controller-name
, чтобы отображать форму в модальном окне. В файле _form.php
добавьте следующий код:
<?php use yiihelpersHtml; use yiiwidgetsActiveForm; // ... ?> <?php $form = ActiveForm::begin(['options' => ['enctype' => 'multipart/form-data']]); ?> <?= $form->field($model, 'field1')->textInput() ?> <?= $form->field($model, 'field2')->textInput() ?> <!-- Добавьте остальные необходимые поля --> <div class="form-group"> <?= Html::submitButton('Сохранить', ['class' => 'btn btn-primary']) ?> </div> <?php ActiveForm::end(); ?>
После выполнения всех этих шагов, когда вы нажимаете на ссылку "Создать запись" на странице index
, модальное окно с формой создания записи будет открыто. После заполнения формы и нажатия кнопки "Сохранить", запись будет сохранена в базу данных, а модальное окно будет закрыто. Если в форме есть ошибки, модальное окно останется открытым и ошибки будут отображены.