簡體   English   中英

如何在cakephp中更新記錄

[英]how to update record in cakephp

這是編輯的代碼

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'); ?>

問題是它總是添加新記錄而不是更新當前記錄。 我該怎么解決?

插入新記錄的原因是CakePHP方法不知道您正在編輯的記錄的ID。 基本上,當傳遞給save()方法的數據不包含記錄ID或表中不存在ID時, save()將插入新記錄而不是更新現有記錄。

解決這個問題的通常方法是添加echo $form->input('id'); 到形式。 這將添加一個隱藏字段,其中包含正在編輯的記錄的ID到表單。 此時啟用安全組件是個好主意,因為它可以幫助您防止篡改表單數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM