错误:在 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->Form->create()
代替$form->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()