Ich habe drei Modelle: User, Job und UserJob. Die Modelle Benutzer und Job haben eine n: m-Beziehung. Im Benutzerformular muss ich dynamisch neue Jobs hinzufügen.Yii2: Dynamische DateControl-Felder aus einem verwandten Modell zu einem Formular hinzufügen
Im Modell Benutzer ich die für den aktuellen Benutzer verbundenen Arbeitsplätze:
public function getUserJobs() {
return UserJob::find()
->where(['user_id' => $this->id])
->orderBy('start DESC')
->all();
}
Im Blick/user/_form.php sind die bestehenden Arbeitsplätze Form wie folgt hinzugefügt:
if (isset($userJobs)) {
$i = 0;
foreach ($userJobs as $job) {
$i++;
...
echo $form->field($job, '['.$i.']start')->widget(DateControl::className(), [
'type' => kartik\datecontrol\DateControl::FORMAT_DATE,
'saveOptions' => [
'name' => 'job_start[]',
],
])->label(false);
...
Ich füge neue Jobs mit jQuery (ähnlich wie in diesen examples). Für die meisten Felder funktioniert es perfekt. Aber es gibt ein Problem mit dem Feld Start, die die DateControl Erweiterung verwendet. Die Erweiterung erzeugt ein eigenes jQuery-Skript. Ohne dieses Skript zu bearbeiten, kann das Startfeld nicht korrekt funktionieren.
Gibt es eine Möglichkeit, dynamisch neue DateControl Felder zu dem Formular hinzuzufügen?