Yii2 enregistrer le tableau de champs de formulaire à un seul champ de base de données
Comment puis-je enregistrer un tableau de champs dans Yii2 l'actuelle/valeur par défaut configuration ne fonctionne que pour les champs qui ne sont pas de tableau.
Ci-dessous sont les champs du formulaire j'ai besoin de les sauvegarder dans un seul champ:
<div class="repeat">
<table class="wrapper" width="100%">
<thead>
<tr>
<td width="10%" colspan="4"><span class="add">Add</span></td>
</tr>
</thead>
<tbody class="container">
<tr class="template row">
<td width="10%"><span class="move">Move</span></td>
<td width="10%">An Input Field</td>
<td width="70%">
<?= $form->field($model, 'field1ofarray[{{row-count-placeholder}}]')->textInput(['maxlength' => 255])->label('Field Label') ?>
<?= $form->field($model, 'fieldofarray[{{row-count-placeholder}}]')->textInput(['maxlength' => 255])->label('Som field') ?>
<?= $form->field($model, 'field3ofarray[{{row-count-placeholder}}]')->textInput(['maxlength' => 255])->label('Field Label') ?>
<?= $form->field($model, 'field4ofarray[{{row-count-placeholder}}]')->dropDownList(['instock' => 'Instock', 'soldout' => 'Sold Out', 'scheduled' => 'Scheduled']); ?>
</td>
<td width="10%"><span class="remove">Remove</span></td>
</tr>
</tbody>
</table>
Régulateur de courant (j'ai besoin de savoir comment je peux faire une boucle par tableau et de l'enregistrer en tant que bien que l'enregistrement des autres champs dans mon formulaire):
public function actionCreate()
{
$model = new GrailWall();
if ($model->load(Yii::$app->request->post()) && $model->save()) {
return $this->redirect(['view', 'id' => $model->id]);
} else {
return $this->render('create', [
'model' => $model,
]);
}
}
OriginalL'auteur Connor Brough | 2015-05-02
Vous devez vous connecter pour publier un commentaire.
Dans mon cas, je n'ai pas besoin de faire des changements pour le contrôleur.
Vous pouvez simplement faire un champ dans votre base de données d'enregistrement, comme quelque chose de "config_json" et puis de définir une propriété virtuelle avec getter et setter dans votre modèle.
Également définir votre propriété virtuelle pour être en sécurité dans les règles de l'envergure de la Cession des œuvres.
Maintenant, vous pouvez définir des intrants, comme ce à votre avis
OriginalL'auteur luwes
vous pouvez utiliser loadMultiple(), regarde cette
c'est sur les tableaux/entrées multiples.
Charge dans le cas contraire, le modal vous avez besoin de l'aide de la charge($_POST[your_form_name].
OriginalL'auteur scaisEdge
modèles
contrôleur de
OriginalL'auteur 我什么都没看见我什么都没听到
rendra:
Veuillez noter doubles crochets dans
($form, 'email[]')
.ID de l'attribut doit être défini explicitement unique, autrement Id en double sera rendu, ce qui n'est pas conforme W3C/javascript normes.
OriginalL'auteur lubosdz
au lieu d'économie dans la gamme que vous pouvez enregistrer dans la chaîne, à l'utilisation tne variables comme normal dans la vue, ex:
fieldofarray
au lieufieldofarray[]
,et dans le contrôleur de l'utilisation de la fonction implode, ex:
OriginalL'auteur rüff0