在AppController中更改单个变量值

时间:2013-11-14 23:43:53

标签: cakephp

我有一个Horse对象,其中包含completed个变量(文本)。我希望能够在视图中单击set complete,然后将该匹配的completed变量设置为“是”。在此之后,我们会将用户重定向到tasks / index。我的想法是在Controller中创建setcomplete($id)函数,所以我可以通过/setcomplete/4并且那个马的标志会改变。

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

这是基本代码...传入id然后更改变量,然后重定向到tasks / index。

我没有收到错误......它只是不起作用,就是这样。

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 {

        }

    }

1 个答案:

答案 0 :(得分: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.'));
    }
}