【问题标题】:Fatal error: Call to a member function setView() in zend framework致命错误:在 zend 框架中调用成员函数 setView()
【发布时间】:2011-04-01 23:18:37
【问题描述】:

我刚刚下载了zend框架(完整版)并将zend库复制到库文件夹中,但仍然出现此错误

致命错误:在第 16 行的 /var/www/html/webkul/zf_1.8b1_app/application/Bootstrap.php 中的非对象上调用成员函数 setView()

请提供有关如何在 linux 环境中设置 zend 框架的任何工作教程

问候

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
    protected function _initView()
    {
        // Initialize view
        $view = new Zend_View();
        $view->doctype('XHTML1_STRICT');
        $view->headTitle('My Project');
        $view->env = APPLICATION_ENV;

        // Add it to the ViewRenderer
        $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper(
            'ViewRenderer'
        );
        $viewRenderer->setView($view);

        // Return it, so that it can be stored by the bootstrap
        return $view;
    }
}

【问题讨论】:

  • 顺便说一句,你为什么要这样做:$view->env = APPLICATION_ENV;?您不应该重新映射全局可用的常量,它可能会弄乱您的代码并使其他人难以自省。
  • 您的问题解决了吗?目前的答案都对您没有帮助吗?

标签: php zend-framework


【解决方案1】:

我不喜欢覆盖默认引导链的概念,包括创建视图实例,但我可以建议检索已创建的视图对象实例 我会假设你也在使用布局

$this -> bootstrap ('layout');
$layout = $this -> getResource ('layout');
$view = $layout -> getView();
$view->addHelperPath('Dagho/View/Helper', 'Dagho_View_Helper');
$view -> doctype('XHTML1_STRICT');
$view->headMeta()->appendHttpEquiv('Content-Type',
        'text/html; charset=utf-8')
       ->appendHttpEquiv('Content-Language', 'en-US');;
$view->headLink(array('rel' => 'favicon',
        'href' => $view->baseUrl().'/img/favicon.ico'),
        'PREPEND');
$view -> headLink() -> prependStylesheet($view->baseUrl('/css/demo.css'))
        ->prependStylesheet($view->baseUrl('/css/text.css'))
        ->prependStylesheet($view->baseUrl('/css/960.css'))
        ->prependStylesheet($view->baseUrl('/css/reset.css'));

$view->headScript()->appendFile($view->baseUrl('js/jquery-1.5.1.min.js') , "text/javascript")
        ->appendFile($view->baseUrl('js/jquery-ui.min.js') , "text/javascript");
$view -> headTitle('WebSite title');
$view -> headTitle() -> setSeparator( ' : ' );
$trackerId = 'UA-XXXXXX-X';
$googleAnalytics = $view->GoogleAnalytics($trackerId);
Zend_Registry::set("view", $view);
return $view ; 

【讨论】:

    【解决方案2】:

    您不需要在引导类中做很多事情; Zend 现在为您做了很多。在 application.ini 中,如果您使用以下行,它将为您初始化视图:

    resources.view[] = ""
    

    你也可以在那里设置doctype和其他参数,而不是调用$view->doctype():

    resources.view.params.doctype = "XHTML1_STRICT"
    

    如果您确实需要在引导程序中操作视图对象:

    protected function _initViewSetup()
    {
        $this->bootstrap('view');
        $view = $this->getResource('view');
        $view->env = APPLICATION_ENV
    }
    

    【讨论】:

      猜你喜欢
      • 2011-08-22
      • 1970-01-01
      • 2012-09-29
      • 2014-02-05
      • 2014-04-29
      • 2015-09-14
      • 2014-10-07
      • 1970-01-01
      相关资源
      最近更新 更多