Ich habe dieses Modell:Erstellen verknüpfter Datensatz Formular auf separate Seite mit CakePHP
School hasMany Teachers
ich eine Ansicht Aktion/Seite auf meiner Schule Controller haben, wo ich ein „add new Lehrer für diese Schule“ setzen müssen, Verknüpfung. Dieser Link muss zur Lehrer hinzufügen-Seite führen, und der neue Lehrer muss von der vorherigen Seite auf die Schule verweisen.
ich diese auf meinem Link durch Hinzufügen eines Abfrage-String tue, wie:
<a href="/teachers/add?school_id=4">Add new teacher for this school</a>
Da ist in meinem TeachersController gebe ich diesen Wert auf meine Ansicht (Lehrer :: add.ctp) als $ school_id und erstellen ein versteckter Eingang in dem add.ctp wie: So
$this->hidden('school_id', ['value' => $school_id])
wenn ich vorlegen der Lehrer Formular hinzufügen, sein school_id Feld richtig eingestellt ist.
Gibt es einen besseren Weg, dies zu tun? Ich bin nicht wirklich glücklich mit meiner Lösung und dem Abfrage-String-Trick (man könnte das in der Adressleiste ändern ...).
Dank
Du hast Recht tun konnte ich meine verborgenen Eingang loszuwerden. Ich denke, mein Problem besteht darin, irgendeinen Kontext zu behalten. Was ist also mit der Verwendung der Session-Komponente zum Speichern und Verwenden meiner School-ID? Wäre es ein sauberer Weg? Ich könnte es in meiner School :: view Aktion setzen und es in meinem Lehrer verbrauchen :: hinzufügen ... – Flo
Was passiert, wenn Sie verschiedene Schulen in verschiedenen Browser-Tabs öffnen? Der zuletzt geöffnete Tab speichert in der Session die 'schoold_id'. Aber wenn du dann zum ersten geöffneten Reiter gehst und auf "Lehrer hinzufügen" klickst, wirst du den Lehrer zur letzten Schule hinzufügen. – arilia
in der Tat schlechte Idee:) ... auch wenn in meinem Anwendungsfall diese Situation nie passiert. – Flo