【问题标题】:Fatal error: Call to a member function truncate() on a non-object using CakePHP [duplicate]致命错误:使用 CakePHP 在非对象上调用成员函数 truncate() [重复]
【发布时间】:2012-04-06 11:37:21
【问题描述】:

可能重复:
Call to a member function on a non-object

这行代码有什么问题?

$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'];

【问题讨论】:

  • $this->Text 不是一个对象。这就是错误消息所说的。其他一切都取决于您想做什么以及如何做。
  • 尤其是在控制器上下文中使用助手时。
  • 这不是重复的!仅仅因为我遇到相同的错误并不意味着它已通过相同的答案修复!事实上,关闭它会失去下面的答案。

标签: php cakephp fatal-error


【解决方案1】:

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

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

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

如果是组件,则应将其添加到components 数组中。

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2017-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-16
      • 2011-07-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多