CakePHP SaveВсе не работает - PullRequest
       0

CakePHP SaveВсе не работает

0 голосов
/ 22 декабря 2011

Я не могу заставить мой класс редактирования работать. Моя проверка работает нормально, и когда я нажимаю отладку ($ this-> data) после нажатия кнопки редактирования, все отображаемые данные безупречны, но таблицы не обновляются.

Вот мой класс редактирования.

public function edit($id = null) {
    if($this->request->is('get')) {
        $this->request->data = $this->Bookmark->read(null, $id);
    } else {
        if($this->Bookmark->saveAll($this->request->data)) {
            $this->Session->setFlash('The bookmark has been saved!');
            $this->redirect(array('action' => 'index'));
        } else {
            $this->Session->setFlash('The bookmark could not be saved. Please, try again.');
        }
    }
}

Вот вид.

<?php

echo $this->Form->create('Bookmark', array(
    'action' => 'edit',
    'inputDefaults' => array(
        'class' => 'input-text'
    )
));
echo $this->Form->inputs(array(
    'legend' => false,
    'fieldset' => true,
    'Bookmark.title',
    'Url.url',
    'Bookmark.id' => array('type' => 'hidden'),
    'Url.id' => array('type' => 'hidden')
));
echo $this->Form->button('Edit');
echo $this->Form->end();

?>

Я обновил свой класс редактирования, но это все еще не исправило мою ошибку. То, что исправило это, было двумя скрытыми полями, которые я добавил к представлению.

    'Bookmark.id' => array('type' => 'hidden'),
    'Url.id' => array('type' => 'hidden')

Не совсем уверен, почему, но я просмотрел некоторые другие виды редактирования онлайн и попробовал это, и теперь оно работает.

Ответы [ 2 ]

1 голос
/ 22 декабря 2011

Попробуйте перейти на эту страницу: http://book.cakephp.org/2.0/en/models/saving-your-data.html

В Cake 2.0.x вы должны использовать $this->request->data, хотя это вряд ли проблема.Вы также увидите, что они не устанавливают идентификатор вручную, но позволяют форме сделать это для них.

Если вы попробуете это так, как предлагает книга, и она все еще не работает, опубликуйте вашу новую попытку какРедактировать этот вопрос.

0 голосов
/ 22 декабря 2011

Каждый раз, когда это происходило со мной из-за ошибки валидации.Проверьте на наличие ошибок валидации, например,

echo debug( $this->ModelName->invalidFields() );
...