Php 如何从yii2中的不同模型创建视图中的表单?

Php 如何从yii2中的不同模型创建视图中的表单?,php,yii2,Php,Yii2,我是yii的新手。我正在开发客户项目应用程序。我有一个视图,其中iam显示来自模型、客户和项目的数据 如何创建表单以添加新项目? 要在客户视图中显示项目数据,iam使用 $query=Projects::find() ->where(['projects_clients_id'=> $model->customer_id]); $dataProvider = new ActiveDataProvider([ 'query' =&

我是yii的新手。我正在开发客户项目应用程序。我有一个视图,其中iam显示来自模型、客户和项目的数据

如何创建表单以添加新项目?

要在客户视图中显示项目数据,iam使用

$query=Projects::find()
    ->where(['projects_clients_id'=> $model->customer_id]);    

       $dataProvider = new ActiveDataProvider([
        'query' => $query,        
        'pagination' => [
            'pageSize' => 20,
        ],
    ]);
    echo GridView::widget([
        'dataProvider' => $dataProvider,
    ]);

您有关于的所有文档,如果您是Yii2新手,我建议您使用表单部分

这是一种基本形式:

<?php
   use yii\helpers\Html;
   use yii\widgets\ActiveForm;
?>
<?php $form = ActiveForm::begin(); ?>

<?= $form->field($model, 'name') ?>

<?= $form->field($model, 'email') ?>

<div class="form-group">
    <?= Html::submitButton('Submit', ['class' => 'btn btn-primary']) ?>
</div>

您可以在一个视图中呈现多个模型和/或数据提供程序(正确构造)

例如:

然后,您可以使用一个视图,其中包含几个与适当的数据提供者相关的gridView,以及几个具有适当操作的表单everyone 因此,当您按下指定的submit时,您将调用适当的控制器操作

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


<?php $formOne = ActiveForm::begin(); 
      $formOne->action=  yii\helpers\Url::to('ControllerOne\create');
 ?>

<?= $formOne->field($modelOne, 'name') ?>

<?= $formOne->field($modelOne, 'email') ?>

<div class="form-group">
   <?= Html::submitButton('Submit', ['class' => 'btn btn-primary']) ?>
</div>
<?php ActiveForm::end(); ?>



<?php $formFour = ActiveForm::begin(); 
   $formFour->action= yii\helpers\Url::to('ControllerFour\create');
?>

<?= $formFour->field($modelFour, 'name_four') ?>

<?= $formFour->field($modelFour, 'email_four') ?>

<div class="form-group">
   <?= Html::submitButton('Submit', ['class' => 'btn btn-primary']) ?>
</div>
<?php ActiveForm::end(); ?>


我希望这可能有用

您应该为您想要的任何形式创建另一个
modelForm
。最佳方式是每个表或模型对应一个模型。这是你问题的答案吗?萨格思..我同意..但我对使用不同模型的表单感到困惑。如果我实现上面的表单,它将只从Customers表中获取数据。我需要项目表。正如我在演示中所展示的,我有一个页面,上面有客户及其项目。我想从同一页添加一个新项目。。显示项目模型中的数据没有问题。但是如何创建一个表单来添加新项目?我该怎么做?您需要一个项目
模型
您可以使用
Gii
工具创建,一个
控制器
使用此模型存储数据,一个
视图
和表单,以及一个ProjectForm
model
,用于验证来自表单的数据,并将其发送给控制器的另一个操作。我不想成为一个固执己见的人,但权威指南解释了MVC是如何比我更好地工作的:染料,实际上我看起来像这样。
<?php
    use yii\helpers\Html;
    use yii\widgets\ActiveForm;
?>


<?php $formOne = ActiveForm::begin(); 
      $formOne->action=  yii\helpers\Url::to('ControllerOne\create');
 ?>

<?= $formOne->field($modelOne, 'name') ?>

<?= $formOne->field($modelOne, 'email') ?>

<div class="form-group">
   <?= Html::submitButton('Submit', ['class' => 'btn btn-primary']) ?>
</div>
<?php ActiveForm::end(); ?>



<?php $formFour = ActiveForm::begin(); 
   $formFour->action= yii\helpers\Url::to('ControllerFour\create');
?>

<?= $formFour->field($modelFour, 'name_four') ?>

<?= $formFour->field($modelFour, 'email_four') ?>

<div class="form-group">
   <?= Html::submitButton('Submit', ['class' => 'btn btn-primary']) ?>
</div>
<?php ActiveForm::end(); ?>