Yii2 Insérer plusieurs enregistrements d'une même table
J'Ai mon modèle avec 2 champs Product.php:
[['ID_PRODUCT'], 'integer'],
[['NAME_PRODUCT'], 'string'],
mon Contrôleur ProductController.php:
public function actionCreate()
{
$model = new Product();
if ($model->load(Yii::$app->request->post()) && $model->save()) {
return $this->redirect(['view', 'id' => $model->ID_PRODUCT]);
} else {
return $this->render('create', [
'model' => $model,
]);
}
}
Et je veux insérer plusieurs fois le même tableau avec ActiveForm:
<?php $form = ActiveForm::begin(); ?>
<?= $form->field($model, 'ID_PRODUCT')->textInput(['maxlength' => true]) ?>
<?= $form->field($model, 'NAME_PRODUCT')->textInput(['maxlength' => true]) ?>
<?= $form->field($model, 'ID_PRODUCT')->textInput(['maxlength' => true]) ?>
<?= $form->field($model, 'NAME_PRODUCT')->textInput(['maxlength' => true]) ?>
<div class="form-group">
<?= Html::submitButton($model->isNewRecord ? 'Create' : 'Update', ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?>
</div>
<?php ActiveForm::end(); ?>
Mais quand j'ai enregistrer les informations les champs sont écrasés et seul le dernier enregistrement est inséré
Vous devez vous connecter pour publier un commentaire.
Ce que vous essayez de faire est de recueillir, valider et enregistrer les données tabulaires. La raison pour laquelle cela ne fonctionne pas, c'est que dans la forme, Yii génère un nom de balise sur le champ nom et le modèle, par exemple
name="[Product]["ID_PRODUCT"]
. Lorsque le formulaire est envoyé au serveur, la première champs écrasés par les derniers, car ils ont le même nom. La bonne façon de recueillir des tableaux de saisie dans un formulaire pour ajouter des parenthèses à la fin du nom, comme ceci;name="[1][Product]["ID_PRODUCT"]
.En utilisant cette méthode, Yii donne les moyens de chargement et de validation des modèles multiples.Modifier votre code de contrôleur pour l'utilisation de plusieurs modèles;
Maintenant vous avez toutes les données dont vous avez besoin pour remplir le formulaire, y compris les messages d'erreur générés par les différentes instances de vous
product
modèle. Le fichier de vue de la forme doit être modifié comme ceci, à utiliser les multiples modèles;Tous de ce qui est couvert dans le Yii2 documentation