Yii2 传递动态模型查看



我有一个创建工资单页面,我想传递一个动态模型,因为此页面/视图需要多个收入项目。

我在控制器中的actionCreateNew

$session = Yii::$app->session;  
$model = new Payslip();
$model->user_id = $id;
$model1 = new EarningDetails();
$model2 = new DeductionDetails();
$items = PayrollItems::find()->where(['store_id' => $id])->andwhere(['active' => 1])->andwhere(['payroll_type' => 'Earnings'])->all();
$count = count($items);
for($i = 1; $i <= $count; $i++){
    $earning[$i] = new EarningDetails();
    $earning[$i]->earning_item_id = $items[$i];
}

这是我在同一操作控制器中的return语句:

return $this->render('create', [
    'model' => $model,
    'model1' => $model1,
    'model2' => $model2,
    'items' => $items, 
]);

在我看来:

<?php 
    $earnings = PayrollItems::find()->where(['store_id' => $session['store_id']])->orwhere(['store_id' => null])->where(['payroll_type' => 'Earnings'])->all();
    //$earningslistData = ArrayHelper::map($earnings,'payroll_items_id', 'payroll_name');
    $earningslistData = ArrayHelper::map($earnings,'payroll_items_id',function($items, $defaultValue) {
        return $items->payroll_name;
    });
    for($i = 1; $i <= $count; $i++) {
        echo $form->field($earning[$i], 'earning_item_id')->widget(Select2::classname(), [
            'data' => $earningslistData,
            'options' => ['placeholder' => 'Select an Earning ', 'id' => 'earning_item'],
            'pluginOptions' => [
                'allowClear' => true
            ],
        ]);
    }
?>

问题是,如何返回动态模型?所以我可以在我的观点中使用它。在我上面的 return 语句中,没有$earning因为它是一个动态模型,我不知道返回它。

如果您有任何其他关于动态模型的实现,请告诉我。

你已经成功了一半。

首先,您的代码段中没有动态模型,只有一个模型数组。动态模型在 Yii 中是真实的东西。

现在,如果您希望在控制器中创建的$earning数组在视图中可用,只需在调用 render() 时向数组添加一个条目:

return $this->render('create', [
    'model' => $model,
    'model1' => $model1,
    'model2' => $model2,
    'items' => $items, 
    'earning' => $earning,
]);

您可能还希望将$earningslistData的定义移动到控制器,并以相同的方式将其传递给视图。

最新更新