2016-11-04 5 views
0

Ich habe ein Formular in meinem Yii2-Projekt und ich muss zulassen, dass mehrere Modelle erstellt werden. Insgesamt habe ich eine einzelne Gruppe und mehrere Person ActiveRecords, die mit dem Formular erstellt werden, und jeder Personendatensatz gehört zur Gruppe.Erstellen Sie mehrere Modelle über ActiveForm Yii2

Zum Beispiel habe ich diese Klasse, die die Form ist:

<?php namespace app\models\forms; 

class GroupForm extends yii\base\Model { 
    public $name; 
    public $description; 
    public $date; 
    public $people = []; 

    .... 
} 

Und visuell wird es etwas Ähnliches wie dieses:

enter image description here

Ich möchte das Plus verwenden, um der Lage sein, und Minus-Schaltflächen, um dem Formular zusätzliche Personen hinzuzufügen. Ich habe die JS an Ort und Stelle, um das HTML-Klonen und dergleichen zu handhaben, aber ich bin mir nicht sicher, wie man die erste Person erstellt.

Ich weiß, dass ich den Namen so etwas wie Person[0][first_name] brauche, aber wenn ich die GroupForm instanziiere, gibt es keine Leute Objekte erstellt noch (gespeichert oder im Speicher), so kann ich etwas wie <?php echo $form->field($model->people[0], 'first_name')->textInput(); ?> nicht tun.

Sobald das Formular eingereicht wurde, plante ich, dann über alle "People" -Felder in den POST-Daten zu iterieren und diese in neue People-Objekte zu laden.

Ist es möglich, dies mit dem ActiveForm zu tun oder ist die Antwort, einfach das ActiveForm nicht zu verwenden und die Eingaben mit der Html-Klasse in Yii zu erstellen und dann JS zu verwenden, um den Personenindex zu ändern?

Antwort

1

Grundsätzlich, was ich von Ihrem Beitrag verstanden habe, müssen Sie dynamische Form in Ihrem Yii2-Projekt verwenden. In Ihrem Fall sollte das Formular die Gruppeninformationen plus mehrere Personen enthalten, die zusammen mit dem Formular erstellt werden. In Yii2 kann diese Funktionalität durch die Nutzung von wbraganca/yii2-dynamicform Form widget.There ist eine sehr gute Dokumentation zu implementiert werden, wie das Widget mit einem Beispiel scenario.The Widget Dokumentation zu verwenden, können bei

https://github.com/wbraganca/yii2-dynamicform

Weitere Informationen und finden Demos bei

http://wbraganca.com/yii2extensions/dynamicform-demo1/create

Hoffnung arbeiten, das hilft

+0

Dies ist definitiv, was ich will, aber es sieht aus wie es ein Fehler ist, dass ich macht t unbrauchbarund der Entwickler zieht PRs nicht ein, um das Problem zu beheben https://github.com/wbraganca/yii2-dynamicform/pull/89 – kyle

+1

@ kyle ok lass mich sehen –

Verwandte Themen