Я хочу создать несколько записей одновременно.
У меня есть модель Меню со следующими правилами проверки.
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,
]);
}
В представлении создать У меня есть следующий код:
<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 не заполняет модели.
Я не понимаю, почему?