在 CakePHP 1.2 中从同一个表单上传多张图片

Uploading multiple pictures from the same form in CakePHP 1.2

我有一个一对多的关系,一个房子可以有很多图片。我拥有的模型是 "House" 和 "Picture"。我使用的是 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']);

我看到我的图片 table 中保存了一条新记录,但我希望在我的 table 中看到两条新条目,因为我应该添加两张图片,而不是一张。关于为什么这可能不会为我保存两张照片的任何想法?谢谢。

解决方案:

$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()。