CakePHP: редактирование данных из другой модели с помощью Foreach
У меня есть модель (обменный курс), которая должна отображаться на каждой странице (в заголовке). Я уже успешно загрузил его в свой AppController.
class AppController extends Controller {
[...]
public function beforeFilter() {
[...]
$this->loadModel('Exchange');
$this->set('xchanges', $this->Exchange->find('all'));
}
}
Столбцы модели: id (т. Е. "1"), ключ (т. Е. "USD") и значение (в MXN, т. Е. "18,65"). Нам нужно только иметь возможность вручную редактировать одно конкретное поле из каждой записи (в настоящее время нам нужны только доллары США и евро), и я хотел сделать это из другой модели (в частности, со статической страницы, как в /pages/ бэкенд).
Итак, в моем просмотре страницы я загрузил это так:
<?php foreach ($xchanges as $xchange): ?>
1 <?php echo $xchange['Exchange']['key']; ?> =
<?php
echo $this->form->create('Exchange', array('action' => 'update/' . $xchange['Exchange']['id']));
echo $this->form->input('value', array('label' => false, 'style' => 'float:left;'));
echo ' MXN';
echo $this->form->submit('Update');
?>
<?php endforeach; ?>
Это корректно отображает текущие данные (т. Е. "1 USD = [поле ввода] MXN [кнопка отправки]"), но поле ввода остается пустым, и если я пытаюсь отправить данные, оно отправляет меня на уведомление об успешном редактировании. и перенаправить, но он всегда редактирует первую запись (id 1, ключ USD), даже если я ввел новые данные в форму, соответствующую второй записи (id 2, ключ EUR).
Мое действие по обновлению в ExchangesController:
public function update($id) {
$data = $this->Exchange->findById($id);
if (!$this->Exchange->exists($id)) {
throw new NotFoundException('Invalid exchange rate.');
}
if ($this->request->is(array('post', 'put'))) {
$this->Exchange->id = $id;
if ($this->Exchange->save($this->request->data)) {
$this->Session->setFlash('Exchange rate data succesfully updated.');
$this->redirect(array('controller' => 'pages', 'action' => 'display', 'backend'));
}
$this->Session->setFlash('Unable to update the exchange rate data succesfully. Try again.');
}
}
Что мне не хватает? Что я должен изменить?