我正在用cakePHP编写一个网站。我正在写一个"添加"函数在VideosControllers:
public function admin_add(){
$this->Video->create();
$this->Video->save(array(
'name' => 'New video'
));
return $this->redirect(array(
'controller' => 'Videos',
'action' => 'admin_edit',
$this->Video->id
), 301);
}
这个函数没有View
当我调用这个函数admin_add时,我被重定向到admin_edit页面,但该函数不会在数据库和admin_edit中创建任何视频。
我试图在返回之前放一个die(),但是用户还是被重定向了,这很奇怪。
save()没有正确编码。你需要这个:
$this->Video->save(array($this->Video->alias => array('name' => 'New Video')));
或者你可以硬编码别名:
$this->Video->save(array('Video' => array('name' => 'New Video')));
编辑
我的答案在这里匹配CakePHP 2。x的书。然而,我错了。在那本书中有一种变体没有提到,它允许省略模型名作为数组键。如果您感兴趣,请在您的Cake核心文件版本中遵循Model::save()
到Model::set()
。
我查看了CakePHP 2.6的核心文件,发现它能够通过第一个save()参数在幕后做相当多的工作。这些变体由单元测试覆盖,因此在CakePHP 2.x中可能仍然可用。