2017-07-07 65 views
1

我有一對一的關係,一個房子可以有很多圖片。我有的模型是「房子」和「圖片」。我使用CakePHP 1.2,我可以用這個成功上傳一張圖片:從CakePHP 1.2中的相同表單上傳多張圖片

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

在我houses_controller.php文件,我有這樣的代碼保存照片和相應的協會與它的房子:

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

但我現在需要保存幾張照片。我在https://book.cakephp.org/1.2/en/The-Manual/Core-Helpers/Form.html閱讀文檔,並基於這些信息,我試圖用這個:

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')); 

然後我houses_controller.php文件中有這樣的:

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

我看到一個新的記錄被保存在我的照片列表中,但我期待在桌子上看到兩個新條目,因爲我應該添加兩張照片,而不僅僅是一張。有關爲什麼這可能不會爲我保存兩張照片的任何想法?謝謝。

+0

你的問題說Cake 1.2,但標籤是1.3。哪一個? – Dave

+0

我使用了標籤「cakephp-1.3」,因爲我找不到標籤「cakephp-1.2」,而CakePHP 1.2和1.3至少足夠接近以至於認爲它們的行爲仍然相似。 CakePHP 2.x和3.x可能會有更多的差異。我認爲我沒有足夠的權限來創建標籤。 –

回答

0

解決方案:

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

使用$this->data['Picture']是不夠的,因爲陣列是返回多個元素,所以我與相應的索引如$this->data['Picture'][0]用於第一元件,$this->data['Picture'][1]爲第二個引用每個,等等。

注意:它沒有爲我保存兩條記錄,甚至認爲我使用了save()兩次。但那是另一個問題。您可以在Save multiple times in Cakephp閱讀相應解決方案的答案。基本上你需要在使用save()之前使用create()。