Yii2: как использовать две модели в одном представлении?

У меня есть модель под названием Person.php и модель под названием Country.php.
Тогда у меня есть мнение Лица / create.php

Я включил модель стран, и я позвонил $ modelCountry но разве это не работает? Я получил ошибку:

Неопределенная переменная: modelCountry

Это модель / Persons.php файл.

<?php
use yii\helpers\ArrayHelper;
use yii\helpers\Html;
use yii\widgets\ActiveForm;

/* @var $this yii\web\View */
/* @var $model app\models\Person */
/* @var $modelCountry app\models\Country */

?>
<div class="person-create">

<?php $form = ActiveForm::begin(); ?>
<?= $form->field($model, 'phone')->textInput() ?>
<?= $form->field($modelCountry, 'name')->textInput() ?>

<?= Html::submitButton($model->isNewRecord ? 'Create') ?>

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

</div>

Затем я хочу использовать кнопку отправки для отправки обеих моделей на контроллер (controllers / PersonsController.php)

0

Решение

Вам нужно передать переменную modelCountry к вашим файлам просмотра

В вашем контроллере действие:

    return $this->render('create', [
'model' => $model,
'modelCountry' => $modelCountry,
]);
2

Другие решения

кажется, вы хотите ввести две разные модели одновременно
для этого вам не нужно включать вторую модель в представлении, но в контроллере вы должны создать модели для обоих классов .. перейти к createView и правильно управлять представленными значениями, а затем для последней визуализации представления

public function actionCreate()
{
$model = new Person();
$modelCountry = new Country()

if ($model->load(Yii::$app->request->post('Person') &&  ($modelCoutr->load(Yii::$app->request->post('Country'))  {
$model->save();
$modelCountry->save();
return $this->redirect(['view', 'id' => $model->id]);
} else {
return $this->render('create', [
'model' => $model,
'modelCountry' => $modelCountry,
]);
}
}

В виде действия в функции рендера добавьте нужные модели

public function actionView($id)
{

$yourModelCountry =  Country::find()->where(...)->one();

return $this->render('view', [
'model' => $this->findModel($id),
'modelCountry' => $yourModelCountry ,
]);
}

тогда, по вашему мнению, вы можете ссылаться как с использованием $ model для модели, так и $ modelCountry для yourModelCountr

2

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector