0

我想编辑我的帖子,但是当我访问它时 http://.../posts/edit/2 它只显示帖子已更新的 Flash 消息,有什么问题吗?它不显示编辑表单...

function edit($id = NULL) {
    $this->Post->id = $id;
    if($this->request->is('post')){
        $this->request->data = $this->Post->read(); 
    }else {
        if($this->Post->save($this->request->data)){
            $this->Session->setFlash('The post has been updated');
            $this->redirect(array('action'=>'index'));
        }
    }
}

我的编辑页面

<h2>Edit post</h2>
<?php
echo $this->Form->create('post',array('action'=>'edit'));
echo $this->Form->input('title');
echo $this->Form->input('body');
echo $this->Form->input('id', array('type'=>'hidden'));
echo $this->Form->end('Edit Post');
?>
4

2 回答 2

1

您的 if() 条件错误:

  1. 如果您发布您的数据,那么您只读取您的数据并将其放入编辑表单的 $this->request->data
  2. 否则:您保存一个空的 $this->request->data ,然后使用 Flash 消息重定向。

因此,当您访问表单时,您不会发布任何数据,因此会保存,然后重定向。修复方法是修改 if() 中的条件以在您不发布时读取并在您发布时保存:

if(!$this->request->is('post'))
于 2013-10-07T12:43:55.810 回答
0

您编辑的功能应该如下。

function edit($id = NULL) {
    $this->Post->id = $id;
    if($this->request->is('post')){
        if($this->Post->save($this->request->data)){
            $this->Session->setFlash('The post has been updated');
            $this->redirect(array('action'=>'index'));
        }
    }else{
       $this->request->data = $this->Post->read();
    }
}
于 2013-10-12T02:20:15.757 回答