Обновить только определенное поле в CakePHP
У меня небольшая проблема. У меня есть таблица item_pictures, которая имеет 6 полей img1 | img2 | img3 | ima4 | img5| которые хранят 5 изображений. так что это означает, что в одной строке Базы данных есть 5 полей, в которых хранится путь к изображениям. То, что я хочу сделать, это создать вид кнопки рядом с каждым изображением, чтобы, когда пользователь нажимал на нее, он просто обновлял поле изображения, делая его пустым, вот и все, что я хочу. Так что все, что я хочу обновить или изменить только одно конкретное поле. это возможно и если да, то как??
Вот код, который я до сих пор комментирую:
$this->Form->postLink($this->Html->tag('i', '',
array('class' => 'glyphicon glyphicon-remove')),
array('controller' => 'item_pictures','action' => 'delete_current_img', $item['Item']['id'] .'-'. 'img'.$i .'-'. $pictures['img'.$i]) ,
array('escape' => false), __('Are you sure you want to delete This Image?'))
Так что я хочу, чтобы в контроллере захватили эту переменную и обновили строку с id => $ item ['Item'] ['id'] в столбце img.$ I со значением $pictures['img'.$i] и сделать его пустым...
1 ответ
Я думаю, что вы были довольно близки, поэтому я бы перебрал $i = 1 до $i = 5 с
$item_picture_id = $item['Item']['ItemPicture']['id'] //or something, im not sure how you have done your relations
echo $this->Form->postLink($this->Html->tag('i', '',
array('class' => 'glyphicon glyphicon-remove')),
array('controller' => 'item_pictures','action' => 'delete_current_img', $item_picture_id, 'img'.$i) ,
array('escape' => false), __('Are you sure you want to delete This Image?'));
Так, например, изображение 5 ($i = 5) должно преобразовываться в URL: item_pictures/delete_current_img/ID/img5/
Тогда для вашего контроллера просто есть (очень простой пример):
public function delete_current_img($id,$field){
$this->ItemPicture->id = $id;
$this->ItemPicture->saveField($field,'');
//then just go back to where you come from
$this->redirect(array('controller' => 'foo', 'action' => 'where_ever_the_delete_came_from'));
}
Надеюсь, поможет!