CakePhp错误:对非对象调用成员函数create()

zwghvu4y  于 2022-11-24  发布在  PHP
关注(0)|答案(8)|浏览(203)

我目前正在学习如何使用CakePhp。
我在自定义控制器中创建了一个函数,如下所示:

class FormatsController extends AppController
{
    // ....

    function admin_add()
    {

        // if the form data is not empty
        if (!empty($this->data)) {
            // initialise the format model
            $this->Format->create();
            // create the slug
            $this->data['Format']['slug'] = $this->slug($this->data['Format']['name']);
            // try saving the format
            if ($this->Format->save($this->data)) {
                // set a flash message
                $this->Session->setFlash('The Format has been saved', 'flash_good');
                // redirect
                $this->redirect(array('action' => 'index'));
            } else {
                // set a flash message
                $this->Session->setFlash('The Format could not be saved. Please, try again.', 'flash_bad');
            }
        }
    }

}

然而,在我看来,我得到这个错误:
错误:对非对象调用成员函数create()
为什么会出现此错误?如何修复?
很抱歉,我相信它引用的行 * 不是 * 在Controller中,而是在我的视图中。它引用了我的视图,其中包含以下行:

<?php echo $form->create('Format');?>

在使用这个之前,我还需要声明什么吗?例如$this->Format->create();

n53p2ov0

n53p2ov01#

您应该使用:

$this->Form->create('Format');

删除

<?php echo $form->create('Format');?>

并将其替换为

<?php echo $this->Form->create('Format');?>

$form是导致错误的表单。

nbewdwxp

nbewdwxp2#

需要定义模型的全局名称。因此,要在应用程序中的任何地方访问它。
例如:我的模型是User

class User extends AppModel {
    var $name = 'User';

    function myfunction ($id) {
                  .....
        }
}
To use in controller
Controller: 

class UsersController extends AppController
{
    function test()
    {
      $this->User->myfunction();
        ......
    }
}

希望这对你有帮助!

6ioyuze2

6ioyuze23#

这可能是由于某些原因$this-〉Format没有被创建。如果你查看你的代码片段,你会看到它在调用create()函数。在你调用create()函数之前,把它作为一个调试语句添加到你的控制器函数中,看看它是否被设置。

debug( isset( $this->Format ) );

如果它被设置,应该输出真。如果你尝试这个,让我知道它说什么,我可能有一些其他的建议去从那里。

xdyibdwo

xdyibdwo4#

您是否创建了模型“Format”?当被调用的模型出现问题时,就会出现此类错误。可能是未创建,也可能是未正确创建,或者是未正确导入/初始化。
如果您在控制器中声明了$uses变量,请确保在$uses数组中包含“Format”沿着其他模型。

fjnneemd

fjnneemd5#

在你的行动中试试这个

$this->loadModel('Format');
hsgswve4

hsgswve46#

$this->Format

未定义(因此其值为null),null对象没有函数,因此不能使用

$this->Format->create();

它几乎等于

null->create();
lhcgjxsq

lhcgjxsq7#

尝试

$this->Form->create(null,['url' => ['controller' => 'yourController', 'action' => 'yourAction']])
x6h2sr28

x6h2sr288#

我今天遇到了这个问题,我已经解决了这个对成员函数create()调用,在null上我使用create table name like users正确地创建了model name ANS:正确创建D:\projects\htdocs\sti_new\app\Model\User.php文件夹
(“用户”);

相关问题