致命错误:在非对象 cakephp 上调用成员函数 save()

Posted

技术标签:

【中文标题】致命错误:在非对象 cakephp 上调用成员函数 save()【英文标题】:Fatal error: Call to a member function save() on a non-object cakephp 【发布时间】:2014-03-28 20:35:43 【问题描述】:

我是 cakephp 新手,所以我收到了以下错误消息:

http://imageshack.com/a/img716/3163/ofvq.png

这是我的 CalaboradoresController.php 文件:

<?php

class ColaboradoresController extends AppController

    public $name = 'Colaboradores';

    public function add()
        if($this->data)
            if($this->Colaborador->save($this->data))
                $this->Session->setFlash ('Colaborador adicionado com sucesso!');
        
    



?>

这是我的 Colaborador.php 文件:

<?php

    class Colaborador extends AppModel

        public $name = 'Colaborador';

    

?>

【问题讨论】:

您是否尝试过自定义变形器?我猜默认需要ColaboradorsController 我可以试试,但你必须指定如何做,因为我是蛋糕的新手,对不起.. 【参考方案1】:

将控制器文件名更改为 ColaboradorsController.php 和控制器名称 ColaboradorsController

或者您可以将其添加到您的控制器:

public $uses = 'Colaborador';

【讨论】:

【参考方案2】:

模型必须有一个类名,例如行政 初始化的 var $name 将是您的表

因此,当您尝试保存数据时,您必须将模型名称引用到 $this-&gt;admin-&gt;save($this-&gt;data)

这将从错误中保存

【讨论】:

【参考方案3】:

您需要先加载模型,然后再调用保存函数。

你可以通过两种方式加载模型

首先:在你需要显式加载 Colaborador 模型的控制器中定义 $uses:

 var $uses = array('Colaborador','MonthlyReturn','Employee','Company');

第二:你可以像这样使用loadModel函数

 $this->loadModel('Colaborador');

在保存函数之前使用这个 loadModel 函数。

我希望这对您有所帮助。

【讨论】:

以上是关于致命错误:在非对象 cakephp 上调用成员函数 save()的主要内容,如果未能解决你的问题,请参考以下文章

致命错误:在非对象上调用成员函数 getLoginUrl()

PDO 致命错误:在非对象上调用成员函数 prepare()

致命错误:在非对象上调用成员函数 fetch_array()

Zend_Mail generateMessage() 导致致命错误:在非对象上调用成员函数 getContent()

致命错误:在非对象上调用成员函数 fetchALL() - 在 Microsoft Access 数据库上使用 PDO

错误:在 cakephp 的非对象上调用成员函数 create(),即使模型的名称已经定义