[英]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.