Чтобы сохранить несколько изображений, связанных с автомобилем, сначала вы должны изменить вашу модель автомобиля в:
class Car extends AppModel
{
var $hasMany = array(
'Gallery' => array(
'className' => 'Gallery',
'foreignKey' => 'car_id'
));
}
или просто
class Car extends AppModel
{
var $hasMany = array('Gallery'); //simplified version, as fields follow convention
}
Тогда вы должны структура ваших данных следующая:
$data = array(
'Car' => array('title' => 'Volvo'),
'Gallery' => array(
array('gallery_images' => '/path/image1'),
array('gallery_images' => '/path/image1'),
array('gallery_images' => '/path/image3'),
),
);
На ваш взгляд, форма должна иметь следующую структуру:
echo $this->Form->create('Car', array('action' => 'add'));
echo $this->Form->input('Car.title');
echo $this->Form->input('Gallery.0.gallery_images');
echo $this->Form->input('Gallery.1.gallery_images');
echo $this->Form->input('Gallery.2.gallery_images');
echo $this->Form->end();
В вашей CarControllers::add()
вы можете сохранить все четыре записи (один автомобиль и три изображения) с:
$this->Car->saveAll($this->request->data);
Пожалуйста, обратите внимание переименование поля для лучшего представления ваших данных. Например, gallery_images
следует переименовать в нечто вроде image_filename
, а модель Gallery
- Image
из Photo
.
Согласно Car.featured_image
, он может содержать внешний ключ для галерей, или вы можете переместить это поле на стол галереи/изображения и сделать его поле с именем type
(холдинг «показал, нормальный, и т.д.»), или, возможно, boolean по имени is_featured
.
Просьба уточнить, что такое поле 'gallery_images' и какой тип данных он содержит. Где вы планируете хранить имена файлов для изображений? –
gallery_images - это имя поля таблицы галереи, в котором хранятся имя изображения и тип данных - varchar и мой план – jay