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.');
    }
}

Что мне не хватает? Что я должен изменить?

0 ответов

Другие вопросы по тегам