Загрузка нескольких изображений из одной формы в CakePHP 1.2

У меня отношения «один ко многим», когда у одного дома может быть много картинок. У меня есть модели "Дом" и "Картинка". Я использую CakePHP 1.2, и я могу успешно загрузить одно изображение, используя это:

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

В моем файле house_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'));

Тогда мой файл house_controller.php имеет следующее:

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

Я вижу, что в моей таблице изображений сохранена одна новая запись, но я ожидал увидеть две новые записи в своей таблице, потому что мне нужно было добавить два изображения, а не только одно. Любые идеи о том, почему это не может сохранить две фотографии для меня? Спасибо.


person Jaime Montoya    schedule 07.07.2017    source источник
comment
В вашем вопросе написано Cake 1.2, но тег 1.3. Который из?   -  person Dave    schedule 09.07.2017
comment
Я использовал тег cakephp-1.3, потому что не смог найти тег cakephp-1.2, а CakePHP 1.2 и 1.3, по крайней мере, достаточно близки, чтобы предположить, что они все еще ведут себя одинаково. CakePHP 2.x и 3.x, скорее всего, будут иметь больше различий. Я не думаю, что у меня еще достаточно прав для создания тегов.   -  person Jaime Montoya    schedule 10.07.2017


Ответы (1)


Решение:

$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(). Но это был другой вопрос. Вы можете прочитать ответы на странице Сохранить несколько раз в Cakephp для соответствующего решение. В основном вам нужно использовать create(), прежде чем использовать save().

person Jaime Montoya    schedule 07.07.2017