Чтобы передать два объекта одной формы в Yii2, вам потребуется использовать модель формы и объединить в ней две модели данных.
1. Создайте новый класс для модели формы (например, MyForm), который будет наследоваться от класса yiibaseModel:
namespace appmodels; use yiibaseModel; class MyForm extends Model { public $model1; public $model2; public function rules() { return [ [['model1', 'model2'], 'required'], ]; } }
2. В контроллере, где вы обрабатываете форму, создайте экземпляр модели формы и двух моделей данных, которые вы хотите передать:
use appmodelsMyForm; use appmodelsModel1; use appmodelsModel2; public function actionYourAction() { $formModel = new MyForm(); $model1 = new Model1(); $model2 = new Model2(); // Обработка отправки формы if ($formModel->load(Yii::$app->request->post()) && $formModel->validate()) { // Делаем что-то с моделями данных // ... } return $this->render('your-view', [ 'formModel' => $formModel, 'model1' => $model1, 'model2' => $model2, ]); }
3. В представлении (виде) вашей страницы создайте форму, используя ActiveForm, и добавьте поля для двух моделей данных:
use yiiwidgetsActiveForm; use yiihelpersHtml; <?php $form = ActiveForm::begin(); ?> <?= $form->field($formModel, 'model1')->textInput() ?> <?= $form->field($formModel, 'model2')->textInput() ?> <?= Html::submitButton('Отправить', ['class' => 'btn btn-primary']) ?> <?php ActiveForm::end(); ?>
Теперь вы можете передавать два объекта одной формы в Yii2, и при отправке формы значения полей будут автоматически привязаны к соответствующим моделям данных. В контроллере вы можете получить доступ к этим объектам через $formModel->model1 и $formModel->model2.