我目前正在学习如何使用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();
8条答案
按热度按时间n53p2ov01#
您应该使用:
删除
并将其替换为
$form是导致错误的表单。
nbewdwxp2#
需要定义模型的全局名称。因此,要在应用程序中的任何地方访问它。
例如:我的模型是User
希望这对你有帮助!
6ioyuze23#
这可能是由于某些原因$this-〉Format没有被创建。如果你查看你的代码片段,你会看到它在调用create()函数。在你调用create()函数之前,把它作为一个调试语句添加到你的控制器函数中,看看它是否被设置。
如果它被设置,应该输出真。如果你尝试这个,让我知道它说什么,我可能有一些其他的建议去从那里。
xdyibdwo4#
您是否创建了模型“Format”?当被调用的模型出现问题时,就会出现此类错误。可能是未创建,也可能是未正确创建,或者是未正确导入/初始化。
如果您在控制器中声明了$uses变量,请确保在$uses数组中包含“Format”沿着其他模型。
fjnneemd5#
在你的行动中试试这个
hsgswve46#
未定义(因此其值为null),null对象没有函数,因此不能使用
它几乎等于
lhcgjxsq7#
尝试
x6h2sr288#
我今天遇到了这个问题,我已经解决了这个对成员函数create()调用,在null上我使用create table name like users正确地创建了model name ANS:正确创建D:\projects\htdocs\sti_new\app\Model\User.php文件夹
(“用户”);