关于php:错误:在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

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

联系人控制器:

1
2
3
4
5
6
7
8
9
10
11
<?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
  }
?>

索引文件

1
2
3
4
5
6
<?php
//form
echo $form->create("Contact");
echo $form->inputs();
echo $form->end('Send');
?>

但我还是会犯致命的错误吗?需要帮助,谢谢。


$this->Form->create()代替$form->create()

在helper对象之前必须使用$this

index.php代码应该如下所示:

1
2
3
4
5
6
<?php
//form
echo $this->Form->create("Contact");
echo $this->Form->inputs();
echo $this->Form->end('Send');
?>


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