Задать вопрос
@demka-dd

Появляется ошибка, не понимаю как её исправить Setting unknown property: yii\bootstrap5\ActiveForm::model?

Не могу исправить ошибку в бронировании. У меня есть форма в main.php вызывается она по кнопке, кнопка в index.php.
Пытаюсь сделать, чтобы эта форма отправлялась в базу данных booking и при отправке форма закрывалась и появлялось смс об успешной отправке.
Вот мой код модального окна в main.php:

close-btn.svg

Забронировать номер

<?php $form = ActiveForm::begin(['id' => 'form-booking', 'model' => $bookingForm]); ?>

<?= $form->field($bookingForm, 'name')->textInput(['placeholder' => 'Ваше имя']) ?>
<?= $form->field($bookingForm, 'pet_name')->textInput(['placeholder' => 'Имя питомца']) ?>
<?= $form->field($bookingForm, 'phone')->textInput(['placeholder' => 'Ваш телефон']) ?>
<?= $form->field($bookingForm, 'start_date')->textInput(['type' => 'date', 'placeholder' => 'Дата с']) ?>
<?= $form->field($bookingForm, 'end_date')->textInput(['type' => 'date', 'placeholder' => 'Дата по']) ?>


<?= Html::submitButton('Забронировать', ['class' => 'btn btn-primary']) ?>


<?php ActiveForm::end(); ?>


Скрипт:

models/BookingForm.php
<?php

namespace app\models;

use Yii;
use yii\base\Model;

class BookingForm extends Model
{
public $name;
public $pet_name;
public $phone;
public $start_date;
public $end_date;

public function rules()
{
return [
[['name', 'pet_name', 'phone', 'start_date', 'end_date'], 'required'],
['phone', 'string', 'max' => 15],
[['start_date', 'end_date'], 'date', 'format' => 'php:Y-m-d'],
];
}

public function book()
{
$booking = new Booking();
$booking->name = $this->name;
$booking->pet_name = $this->pet_name;
$booking->phone = $this->phone;
$booking->start_date = $this->start_date;
$booking->end_date = $this->end_date;

if ($booking->save()) {
return true;
} else {
$this->addErrors($booking->errors);
return false;
}
}
}
Контроллер:
public function actionBook()
{
Yii::$app->response->format = Response::FORMAT_JSON;
$request = Yii::$app->request;

if ($request->isPost) {
$bookingForm = new BookingForm();
$bookingForm->load($request->post());

if ($bookingForm->validate() && $bookingForm->book()) {
return ['success' => true];
} else {
return ['success' => false, 'errors' => $bookingForm->errors];
}
}

throw new BadRequestHttpException('Invalid request');
}
база данных
public function safeUp()
{
$this->createTable('{{%booking}}', [
'id' => $this->primaryKey(),
'name' => $this->string()->notNull(),
'pet_name' => $this->string()->notNull(),
'phone' => $this->string()->notNull(),
'start_date' => $this->date()->notNull(),
'end_date' => $this->date()->notNull(),
]);
}
  • Вопрос задан
  • 32 просмотра
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 1
kawabanga
@kawabanga
ActiveForm::begin(['id' => 'form-booking', 'model' => $bookingForm]);

Модель вызываете в ActiveForm. Удалите model тут.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы