@DragonChris
Junior full stack)

Как правильно передать model в layout в yii2?

У меня в layout есть форма обратной связи, и мне нужно передать туда модель.
Искал варианты и найболее првильным мне кажеться вариант с виджетом, но я не знаю как вернуть модель с виджета или попросту не понимаю как должно работать.
Вот код виджета :
<?php

namespace frontend\widgets;

use yii\base\Widget;
use yii\helpers\Html;
use common\models\Callback;

class LModel extends Widget {
    public $lModel;
    public function init()
    {   
        parent::init();
    }

    public function run()
    {   
        $lModel = new Callback();
        return $lModel;
    }
}

Я уже понял, что виджет возвращает строку(ругается что я передаю обьект).
Подскажите, как правильно передать модель в лайаут ибо вызывать ее там не очень хочется.
Спасибо заранее!
  • Вопрос задан
  • 898 просмотров
Решения вопроса 1
@myphpscript
public function run() {
		
		
		return $this->render('callbackform', [
			'model' => new Callback(),
		]);
	}


в frontend/widgets/views делаете вьюшку с формой callbackform.php типа такой
<?php
use yii\helpers\Url;
use yii\helpers\Html;
use yii\widgets\ActiveForm;
?>

<div id="callback">
    <?php $form = ActiveForm::begin([
	    'id' => 'callback-form',
	    'enableAjaxValidation' => true,
	    'action' => Url::to(['site/callback']),
	    'validationUrl' => Url::to(['site/callback']),
	]); ?>
	
        <?= $form->field($model, 'name')->textInput([
			'placeholder' => 'Имя',
		])->label(''); ?>
		
		<?= $form->field($model, 'phone')->textInput([
			'placeholder' => 'Телефон',
		])->label(''); ?>
		
		 <?= Html::submitButton('Отправить', ['class' => 'btn btn-primary']) ?>

    <?php $form->end(); ?>
</div>


в контроллере site/callback валидацию и отправку
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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