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

Posted

技术标签:

【中文标题】错误:在 cakephp 的非对象上调用成员函数 create(),即使模型的名称已经定义【英文标题】:Error: Call to a member function create() on a non-object in cakephp even thought the name of the model has been defined 【发布时间】:2013-07-01 23:33:02 【问题描述】:

错误:在 cakephp 中对非对象调用成员函数 create()。我已经在我的控制器页面中定义了所有这些。

联系人控制器:

<?php
 public $helpers = array('html', 'Form');
 public $components = array('RequestHandler');
 public $uses = array("Contact");

 public function index()
  if ($this->RequestHandler->isPost()) 
    $this->Contact->set($this->data);
    //validates here
  
?>

index.ctp

<?php
//form
echo $form->create("Contact");
echo $form->inputs();
echo $form->end('Send');
?>

但是我仍然遇到致命错误吗?需要帮助谢谢。

【问题讨论】:

大声笑,我完全忘记了。它应该是 $this->Form->create("Contact"); 这个问题似乎离题了,因为它是关于一个非常狭窄的具体案例,不适用于公众。 @BurhanKhalid 我不同意,因为这是 1.3 版及之前版本的有效语法。它在 2.0 版中发生了变化 【参考方案1】:

使用$this-&gt;Form-&gt;create() 代替$form-&gt;create()

你必须在帮助对象之前使用$this

您的 index.php 代码应如下所示:

<?php
//form
echo $this->Form->create("Contact");
echo $this->Form->inputs();
echo $this->Form->end('Send');
?>

【讨论】:

是的,是的,我忘了。但为什么我又收到这个错误?调用非对象上的成员函数 send()。这是因为我使用的是 cakephp.2 吗? 查看 book.cakephp.org 如何使用 cake2 中的新 CakeMail 类,最重要的是阅读迁移指南,其中列出了所有更改。【参考方案2】:

好好检查你的控制器类。您是否重新定义了 AppController::render() 或在子类中重新实现它?您可能这样做是为了为您的应用程序指定布局。 我遇到了同样的错误。我发现进入渲染方法的 $view 参数(这是要渲染的视图的名称)为空,因为我覆盖了渲染方法。 如果您没有覆盖 render(),请检查您可能设置了控制器的 $view 属性的任何位置。

【讨论】:

以上是关于错误:在 cakephp 的非对象上调用成员函数 create(),即使模型的名称已经定义的主要内容,如果未能解决你的问题,请参考以下文章

在 SELECTION 语句的非对象上调用成员函数 bind_param()

PHP 致命错误:在第 45 行的 admin\includes\html\database.class.php 中的非对象上调用成员函数 prepare()

致命错误:对 SQL SERVER 2012 的非对象 XAMPP 上的成员函数 query() 调用

在 CakePHP 3 中调用布尔错误时的成员函数 build()

wordpress 在functions.php第5行的非对象上调用成员函数add_section()

MFC中静态成员函数调用其他类的非静态变量