cakePHP中的创建方法不工作


Create method in cakePHP not working

我正在用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中可能仍然可用。