как обновить запись в cakephp - PullRequest
3 голосов
/ 29 августа 2010

это код для редактирования

function edit($id){

    if(!empty($this->data)) {
        if($this->Article->save($this->data)) {
            pr($this->Article);
            $this->Session->setFlash("Article Saved!");
            $this->redirect('/articles/view');        
            }    
    }
    else    
        $this->data = $this->Article->findByArticleId($id);

}

и для просмотра

<?php 
echo $form->create('Article', array('type' => 'post','action'=>'edit')); 
?>

<table>
<tr><td>Edit Article</td></tr>
<tr><td>Title: </td><td><?php echo $form->text('article_title',array('label'=>false,'type'=>'text','size'=>50)); ?></td></tr>
<tr><td>Text: </td><td><?php echo $form->textarea('article_text',array('label'=>false,'class'=>'ckeditor','columns'=>100,'row'=>8,'width'=>100));?></td></tr>
<tr><td>Published: </td><td><?php echo $form->radio('article_published',array('1'=>'Yes','0'=>'No'),array('legend'=>false));?></td></tr>
</table>
<?php echo $form->end('Save'); ?>

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

1 Ответ

10 голосов
/ 29 августа 2010

Причина, по которой вставляется новая запись, заключается в том, что метод CakePHP не знает идентификатор редактируемой записи.Обычно, когда данные, передаваемые методу save(), не содержат идентификатор записи или идентификатор не существует в таблице, save() вставит новую запись вместо обновления существующей.Чтобы исправить это, добавьте echo $form->input('id'); к форме.Это добавит скрытое поле с идентификатором редактируемой записи в форму.На этом этапе включение компонента безопасности было бы хорошей идеей, поскольку это поможет вам предотвратить вмешательство в данные формы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...