在我的控制器中,我有这些功能:
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表,而是默认"单词"。
答案 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
也不是一个好的变量名。