У меня есть форма редактирования, где я хотел бы обновить ряд моделей.Проблема в том, что моя основная модель, Units, принадлежит Location (так как одна локация может иметь много юнитов).В руководстве пользователя CakePHP описано, как сохранить все, когда данные связанной модели принадлежат вашей основной модели, а не как это работает в обратном порядке.Код, который я использую ниже, очевидно, не обновляет Location.address.
из edit.ctp:
<?php
echo $this->Form->create('Unit', array('url'=>array('action' =>'edit'));
echo $this->Form->input('unitnum', array('label' => 'Unit\'s Name/Number'));
echo $this->Form->input('Location.0.address');
echo $this->Form->end('Update Property');?>
А вот код моего контроллера:
function edit($id) {
$this->Unit->id = $id;
if (empty($this->data)) {
$this->data = $this->Unit->read();
} else {
if ($this->Unit->saveAll($this->data)) {
$this->Session->setFlash('Your property has been updated.');
}
}
}
Примечание: я также попытался использовать echo $ this-> Form-> input ('Location.address');и хотя он прекрасно заполняет мое поле для меня, он все равно не обновляет адрес Location, если я его изменю.
UPDATE Я обнаружил, что когда я отправляю свою форму, тортвместо обновления адреса местоположения, ДОБАВЛЯЕТ новое местоположение со всей новой информацией!
2-е ОБНОВЛЕНИЕ Я также обнаружил, что дополнительно, в то время как торт сохранит НОВУЮ запись для СВЯЗАННЫХ данных модели(что основная модель принадлежит), она не обновляет информацию об Unit (основная модель).