@MaikMain
Начинающий backend - developer

Как подключить файл и передать model в Yii2?

Всем привет, столкнулся с такой проблемой. Делаю функцию обратного звонка
У меня есть модель (Callback), контроллер(CallbackController) и вью(frontend/view/callback/index.php).
Контроллер:
spoiler
public function actionIndex()
    {
        $model = new Callback();

        if ($this->request->isPost) {
            if ($model->load($this->request->post()) && $model->save()) {
                Yii::$app->session->setFlash('success', 'Сообщение успешно отправлено!');
                return $this->redirect(Yii::$app->request->referrer);
            }
        }
        return $this->render('index', compact('model'));
    }

Пытаюсь в футер layout вывести (подключить) этот callback/inde.php
<?php echo $this->renderA('@frontend/views/callback/index.php'); ?>

callback/index.php
spoiler
<?php \yii\widgets\Pjax::begin(); ?>
<?php $form = \yii\bootstrap\ActiveForm::begin(['id' => 'callback-form-index', 'action' => ['callback/index'],]); ?>
                <div class="modal-body">
                    <?= $form->field($model, 'name')->textInput(['maxlength' => true, 'placeholder' => 'Ваше имя']) ?>
                    <?= $form->field($model, 'phone')->textInput() ?>
                    <?= $form->field($model, 'reCaptcha')->widget(
                        \himiklab\yii2\recaptcha\ReCaptcha2::class,
                        [
                            'siteKey' => 'мой ключ, // unnecessary is reCaptcha component was set up
                        ]
                    ) ?>
                </div>
                <div class="modal-footer">
                    <?= \yii\helpers\Html::submitButton('Заказать обратный звонок', ['class' => 'callback_btn', 'name' => 'callback-button', 'id' => 'refreshButton1', 'onclick' => "yaCounter51997982.reachGoal('buttonCallback'); return true;"]) ?>
                </div>
                <?php \yii\bootstrap\ActiveForm::end(); ?>
<?php \yii\widgets\Pjax::end(); ?>


Но у меня вылетает ошибка:
Call to a member function isAttributeRequired() on null

Ругается на поля которые пользователь должен заполнять.
Подскажите пожалуйста, как это можно побороть.
  • Вопрос задан
  • 65 просмотров
Решения вопроса 1
@IvanMogilev
Backend developer: Wordpress,Yii
<?php echo $this->renderPartial('@frontend/views/callback/index.php',["model" =>new Callback()]); ?>

попробуйте передайте модель в месте где вы рендерите, только вам нужно будет указать полное пространство имён до модели. У вас контролер реднерит конкретную страницу, и он не знает о том что вы в футер вставляете шаблон. После отправки формы вы в него попадёте, но для рендера обьект нужно передать отдельно
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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