@dr_loki

Yii2 Undefined variable: model как исправить?

Добрый день. Начал изучать YII2
Cоздал модель:

<?php

namespace frontend\models;

use Yii;
use yii\base\Model;

class ViborForm extends Model
{
public $name;
public $items;

public function rules()
{
return [
];
}
}
Создал вид с ActivForm.

use yii\helpers\Html;
use yii\bootstrap\ActiveForm;
?>
<?php $form = ActiveForm::begin([
'id'=>'filter']);
?>
<?= $form->field($model, 'name') ?>
<?= $form->field($model, 'items[]')->checkboxList(['a' => 'Item A', 'b' =>'Item B', 'c' => 'Item C']);?>
<?= HTML::submitButton("ПОДОБРАТЬ!", ['class' => 'f_ok']) ?>
<?php ActiveForm::end(); ?>
Прописал action в контроллере.
public function actionVibor()
{
$model = new ViborForm();
return $this->render('vibor',['model' => $model,
]);
}
Через все отображается.
При попытке вывести форму в index.php
<?= $this->render('vibor') ?>
пишет Undefined variable: model.
Подскажите что не так?
  • Вопрос задан
  • 2138 просмотров
Пригласить эксперта
Ответы на вопрос 2
@masterfreelance
программист со стажем
$this->render('vibor') - происходит рендер представления без передачи в представление переменных.
$this->render('vibor',['model' => $model,]); - здесь то же самое,но с передачей в представление переменной model.

Undefined variable: model Вы рендерите представление в котором используется переменная model, а саму переменную в представление не передаете.

public function actionVibor()
{
$model = new ViborForm();
return $this->render('vibor',['model' => $model,
]);
}
Через все отображается.
// Здесь вы передаете переменную model и все хорошо.

При попытке вывести форму в index.php
<?= $this->render('vibor') ?>
пишет Undefined variable: model.
//Здесь переменная не передается. И соответственно Undefined variable: model. Для того чтобы передать переменную надо вызвать $this->render('index', ['model' => $model]) и затем в index.php $this->render('vibor', ['model' => $model])
Ответ написан
Комментировать
@dr_loki Автор вопроса
Undefined variable: model
ошибка остается, только если
$this->render('vibor')-ошибка при вызове вида vibor.php
$this->render('vibor',['model' => $model,]);-ошибка при вызове вида index.php

Найдено решение.(на сколько это правильно не знаю), но
public function actionIndex()
    {
        $model = new ViborForm();
        return $this->render('index',[
            'model' => $model,
        ]);

    }


так работает.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы