1
我有一個編輯頁面,用於編輯博客文章。這裏的控制器動作......編輯頁面必須提交兩次才能保存更改
public function edit($id = null) {
$post = $this->Post->findById($id);
if(!$post) {
throw new NotFoundException('Post not found');
}
if($this->request->is('post')) {
$this->Post->id = $id;
if($this->Post->save($this->request->data)) {
$this->Session->setFlash('Post updated!');
$this->redirect('/');
} else {
$this->Session->setFlash('Unable to update post!');
}
}
if (!$this->request->data) {
$this->request->data = $post;
}
$this->set('tags', $this->Post->Tag->find('list'));
$this->set('pageTitle', 'Edit blog post');
}
而且編輯頁面查看...
<h1>Edit blog post</h1>
<?php echo $this->Form->create('Post'); ?>
<?php echo $this->Form->input('Post.title'); ?>
<?php echo $this->Form->input('Post.body'); ?>
<?php echo $this->Form->input('Tag.Tag', array('type' => 'text', 'label' => 'Tags (seperated by space)', 'value' => $tags)); ?>
<?php echo $this->Form->input('Post.slug'); ?>
<?php echo $this->Form->end('Save Changes'); ?>
出於某種原因,當我做出改變,並點擊「保存修改」,頁面只是刷新,雖然在更新將反映在刷新後的表單中,我必須再次單擊「保存更改」才能將它們保存到數據庫,並讓Cake將我重定向到/
。
可能是什麼原因造成的?
真的很好的答案,我明白爲什麼現在,謝謝。但是,當我將帖子ID添加到'edit.ctp'視圖並再次嘗試時,當我單擊保存更改時,頁面只會刷新。無論我點擊多少數據庫都不會更改。 –
@JamesDawson在你的視圖中嘗試'var_dump'這個'$ this-> request-> data',看看它是否真的有一個id。否則,您需要手動將它傳遞給您的視圖,以便Cake知道要更新的ID。這聽起來像是空的/現在沒有設置。 – Oldskool
爲了解決這個問題,Cake發送了一個'PUT'請求,而不是'POST',即使給了一個ID。所以我必須做'if($ this-> request->是('put')){...}'。這是否意味着發送'PUT'?這是我的理解,Cake通常將其作爲「POST」來執行。無論如何,我已經接受你的答案。再次感謝:) –