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

时间:2017-07-07 16:20:44

标签: cakephp cakephp-1.2

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

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

1 个答案:

答案 0 :(得分: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()。