Model::loadMultiple 没有填充模型

Model::loadMultiple doesn't fill models

我想一次创建多条记录。

我的模型 Menu 具有以下验证规则。

    public function rules()
    {
        return [
            [['productID'], 'required'],
            [['userID', 'productID', 'portions'], 'integer'],
            [['userID'], 'safe'],
        ];
    }

在控制器中,我有以下代码:

    public function actionCreate(){

    $products = Product::find()->where(['status'=>Product::STATUS_ACTIVE])->all();
    $models = [];
    foreach($products as $product){
        $models[] = new Menu;
    }


    if (Model::loadMultiple($models, Yii::$app->request->post()) && Model::validateMultiple($models)) {
        foreach( $models as $model ){
            $model->save(false);
        }
        $this->redirect('/site');
    }

    foreach($products as $index => $product){
        $models[$index]->productID = $product->id;
    }

    return $this->render('create', [
        'models' => $models,
    ]);
}

在视图 create 中,我有以下代码:

<div>
<?php $form = ActiveForm::begin(); ?>

<?php foreach($models as $index =>  $model) { ?>

    <?= $form->field($model, "[$index]portions")->label($model->product->name) ?>

<?php } ?>

<div>
    <?= Html::submitButton(Yii::t('app','Save'),['class' => 'btn btn-success']) ?>
</div>
<?php ActiveForm::end(); ?>

var_dump(Yii::$app->request->post()) 给了我以下结果。

array(2) { ["_csrf-frontend"]=> string(88) "D-vbF_6B7YWBFlH1JTTWEOTeQb0esZhSRN7Bti0S-QdDm-0jj7Wd3dBUGqZBW5J2nrAq-VbfoAQIkpGDXCOtMg==" ["Menu"]=> array(2) { [0]=> array(1) { ["portions"]=> string(4) "9999" } [1]=> array(1) { ["portions"]=> string(4) "5555" } } }

数据来了,但是 loadMultiple 方法没有填充模型。 我不明白,为什么?

我忘记在表单中添加 hiddenInput for productID 字段,验证失败因为那个。

    <?php foreach($models as $index => $model) { ?>
        <?= $form->field($model, "[$index]portions")->label($model->product->name) ?>
        <?= $form->field($model, "[$index]productID")->hiddenInput(['value' => $model->productID])->label(false);?>    
    <?php } ?>