CakePHP setSource仅适用于一次

时间:2014-07-11 11:43:58

标签: php cakephp

在我的控制器中,我有这些功能:

public function index ($id=null)
{
    if($id)
    {
        $this -> Word ->setSource($id);
    }
    $this -> set ('words', $this -> Word -> find('all'));
}

public function add()
{
    if($this->request->is('post'))
    {
        $this->Word->create();
        if($this->Word->save($this->request->data))
        {
            $this->Session->setFlash("K");
            return $this->redirect(array('action'=>'index'));
        }
    }
}

索引(作为参数)表的名称,并显示表。如你所见,我告诉模特使用这个表" setSource"。但添加功能并不会将新行保存到$ id表,而是默认"单词"。

1 个答案:

答案 0 :(得分:1)

按预期工作 - 您没有在add方法中设置源代码,因此Cake按惯例使用默认的Word。您需要找到一种方法将$id传递给add方法 - 可能是通过URL或隐藏的表单字段。

例如......

public function add() {

    if($this->request->is('post')) {
        if(!empty($this->request->data['Word']['set_source'])) {
            $this->Word->setSource($this->request->data['Word']['set_source']);
        }
        $this->Word->create();
        if($this->Word->save($this->request->data)) {          
            $this->Session->setFlash("K");
            return $this->redirect(array('action'=>'index'));
        }
    }
}

但要小心这一点。此外$id也不是一个好的变量名。