2017-07-07 4 views
1

Ich habe eine Eins-zu-viele-Beziehung, wo ein Haus viele Bilder haben kann. Die Modelle, die ich habe, sind "House" und "Picture". Ich benutze CakePHP 1.2 und ich kann ein Bild erfolgreich laden, indem Sie dies:Hochladen mehrerer Bilder aus dem gleichen Formular in CakePHP 1.2

echo $form->input('Picture.filename', array('type' => 'file', 'label' => __l('Image'))); 

In meiner houses_controller.php Datei, ich habe diesen Code speichern Sie das Bild und die entsprechende Verbindung mit seinem Hause:

$this->House->Picture->save($this->data['Picture']); 

Aber ich muss jetzt mehrere Bilder speichern. Ich las die Dokumentation bei https://book.cakephp.org/1.2/en/The-Manual/Core-Helpers/Form.html und auf der Grundlage dieser Informationen, ich versuche, dies zu nutzen:

echo $form->input('Picture.0.filename', array('type' => 'file', 'label' => __l('Image 1')); 
echo $form->input('Picture.1.filename', array('type' => 'file', 'label' => __l('Image 2')); 

Dann meine houses_controller.php Datei hat die:

$this->House->Picture->saveAll($this->data['Picture']); 

Ich sehe, dass ein neuer Datensatz gespeichert wird in meiner Bilder Tabelle, aber ich hatte erwartet, zwei neue Einträge in meiner Tabelle zu sehen, weil ich zwei Bilder, nicht nur eins hinzugefügt hätte. Irgendwelche Ideen, warum dies nicht zwei Bilder für mich speichern könnte? Vielen Dank.

+0

Ihre Frage sagt Kuchen 1.2, aber das Tag ist 1.3. Welcher? – Dave

+0

Ich habe den Tag "cakephp-1.3" verwendet, weil ich kein Tag "cakephp-1.2" gefunden habe und CakePHP 1.2 und 1.3 zumindest nahe genug sind, um anzunehmen, dass sie sich immer noch ähnlich verhalten. CakePHP 2.x und 3.x wird wahrscheinlich mehr Unterschiede haben. Ich glaube nicht, dass ich genug Privilegien habe, um Tags zu erstellen. –

Antwort

0

Lösung:

$this->Deal->Picture->save($this->data['Picture'][0]); 
$this->Deal->Picture->save($this->data['Picture'][1]); 

$this->data['Picture'] Verwendung nicht ausreichend war, da das Array mehrere Elemente zurückkehrte, so musste ich jeweils mit dem entsprechenden Index wie $this->data['Picture'][0] für das erste Element, $this->data['Picture'][1] für das zweite referenzieren, usw.

HINWEIS: Es hat nicht zwei Datensätze für mich gespeichert, auch wenn ich dachte, dass ich save() zweimal verwendete. Aber das war ein anderes Problem. Sie können die Antworten unter Save multiple times in Cakephp für die entsprechende Lösung lesen. Grundsätzlich müssen Sie create() verwenden, bevor Sie save() verwenden.

Verwandte Themen