0

可能重复:
调用非对象上的成员函数

这行代码有什么问题?

$this->Post->saveField('slug', $this->Text->truncate(Inflector::slug($post['Post']['title']),25,array('exact'=>false,'html'=>false,'ending'=>'')));

因为它给了我错误:Fatal error: Call to a member function truncate() on a non-object in /nfs/c03/h01/mnt/12345/domains/jazz.com/html/app/Controller/PostsController.php on line 161

我应该使用别的东西吗?像$this->request->data['title'];

4

2 回答 2

1

该错误意味着它$this->Text不是一个对象,并且您不能在其上调用truncate(或任何其他)方法。

Text应该是模特?如果你想在一个控制器中使用多个模型,你可以将它添加到uses数组中:

var $uses =  array('Post','Text');

如果它是一个组件,您应该将它添加到components数组中。

String如果您正在寻找truncateTextHelper 提供的方法,则可以使用该类。请参阅String::truncate此处给出的示例:http: //book.cakephp.org/2.0/en/core-utility-libraries/string.html

于 2012-04-06T11:44:53.333 回答
0

只需添加一个条件来检查 $this->Text 是否可用

if ($this->Text) {
       $this->Post->saveField('slug', $this->Text->truncate(Inflector::slug($post['Post']['title']),25,array('exact'=>false,'html'=>false,'ending'=>'')));
}
于 2012-04-06T11:44:23.533 回答