0

我有一个Horse具有completed变量(文本)的对象。我希望能够set complete在视图中单击,然后将那匹马的completed变量设置为“是”。在此之后,我们会将用户重定向到任务/索引。setcomplete($id)我的想法是在Controller中创建函数,这样我就可以通过/setcomplete/4并且那匹马的旗帜会改变。

我为它创建了一个基本视图,但我的想法是我不需要视图,但我不知道如何解决这个问题....我正在考虑使用$this->render()或类似的东西。

这是基本代码...传入 id 然后更改变量,然后重定向到任务/索引。

我没有收到错误......它只是不工作,仅此而已。

public function setcomplete($id = null) {
        if (!$this->Task->exists($id)) {
            throw new NotFoundException(__('Invalid task'));
        }
        if ($this->request->is(array('post', 'put'))) {
            $this->set('completed', 'yes');
            if ($this->Task->save($this->request->data)) {
                $this->Session->setFlash(__('The task has been updated.'));
                return $this->redirect(array('action' => 'index'));
            } else {
                $this->Session->setFlash(__('The task could not be saved. Please, try again.'));
            }
        } else {

        }

    }
4

1 回答 1

1

根据我对你的问题的理解。您想将模型设置completed为。我认为你在这里做错了。yesTask

what about the $this->request->data here? 

它是否包含您要为任务模型保存的数据,如下面的结构

Array(
    'Task' => Array(
        'id' => 4, // for eg..
        'completed' => 'yes'
    )
)

如果不

您可以通过这样做来解决问题。[假设你没有$this->request->data]

public function setcomplete($id = null) {
    if (!$this->Task->exists($id)) {
        throw new NotFoundException(__('Invalid task'));
    }

    $this->Task->id = $id;
    $this->Task->set('completed', 'yes')

    if ($this->Task->save()) {
        $this->Session->setFlash(__('The task has been updated.'));
        return $this->redirect(array('action' => 'index'));
    } else {
        $this->Session->setFlash(__('The task could not be saved. Please, try again.'));
    }
}
于 2013-11-15T09:09:58.533 回答