在 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()。
我有一个一对多的关系,一个房子可以有很多图片。我拥有的模型是 "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()。