php – 为什么我收到“在非对象上调用成员函数”错误?

我正在使用Zend框架,由MySQL支持,并尝试设置索引视图.但是,使用我的代码,我不断收到“对非对象的成员函数调用错误,我不知道如何解决它.这是我索引页面的Controller:

 public function indexAction() {
     $dImage = new Application_Model_DImage();
 }

这是它引用的DImage模型的代码

public function getimageDesCol ($Id) {
    return $this->getDb()->fetchCol("SELECT description FROM d_image WHERE d_id = ?", $Id);
}

最后,这是我的索引视图页面的源代码,我正在尝试显示DImage模型中的值:

  <?PHP $description = $this->dImage->getimageDesCol($id) ?>
  <label><?PHP echo $description[0] ?></label>

当我加载该页面时,我得到“在非对象上调用成员函数getimageDesCol()”错误而不是呈现页面.由于我是Zend框架和PHP的新手,所以我觉得我有一些明显缺失的东西.我该怎么做才能解决这个问题?

解决方法:

您必须将Application_Model_DImage对象添加到视图中,否则视图不知道具有该名称的对象.做这个:

public function indexAction()
{
    $dImage = new Application_Model_DImage();
    $this->view->dImage = $dImage;
}

然后,您的视图脚本将提供$dImage.

您的视图脚本在Zend_View对象的上下文中执行,但您在控制器的上下文中创建了Application_Model_DImage对象(Zend_Controller_Action的一个实例).因此,您需要显式传递视图脚本将使用的任何对象.认情况下,Zend_Controller_Action有一个可供您使用的视图对象(请参阅here).

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...