Zend:如何在Bootstrap.php中获取视图?

时间:2011-05-14 17:21:57

标签: php zend-framework title

我想在Bootstrap中设置网页的标题。我在Bootstrap.php中做了类似的事情:

protected function _initViewHelpers() {         
    $view = Zend_Layout::getMvcInstance()->getView();
    $view->headTitle( 'My Title' );
}

我收到以下错误:

Fatal error: Call to a member function getView() on a non-object in /var/www/student/application/Bootstrap.php on line 7

我如何获得视图?我也试过this

5 个答案:

答案 0 :(得分:6)

@ArneRie很接近,但语法错误。这来自quickstart

protected function _initDoctype()
{
    $this->bootstrap('view');
    $view = $this->getResource('view');
    $view->doctype('XHTML1_STRICT');
    // but what you really want is
    $view->headTitle('My title');
}

答案 1 :(得分:5)

您可能在尝试启动之前尝试访问该实例。尝试

protected function _initViewHelpers() {
    $view = Zend_Layout::startMvc()->getView();
    $view->headTitle( 'My Title' );
}

但是,startMVC可以传递一个$options参数,该参数可以是作为字符串的布局文件夹的路径,也可以是将设置为的Zend_Config实例。 MVC实例。 ZF通常会在稍后阶段从您的application.ini自动传递它。我不知道你的应用程序在你没有通过时会如何表现。

更好的选择是拥有Resource PluginController Plugin。有关这些示例的示例,请参阅链接页面,另请参阅source code for Zend_Layout了解实现详细信息。

答案 2 :(得分:2)

它现在对我有用:

Bootstrap.php

protected function _initViewHelpers() {
    $view = new Zend_View();
    $view->headTitle('Main Title')->setSeparator(' - ');
}

在任何视图/ .phtml

<?php 
    $this->headTitle()->prepend('Page Title');
    echo $this->headTitle();
?>

答案 3 :(得分:1)

你可以尝试:

protected function _initViewHelpers() {         
    $bootstrap = $this->getBootstrap();
    $view = $bootstrap->getResource('view');
    $view->headTitle( 'My Title' );
}

答案 4 :(得分:1)

$this->title = "Edit album";
$this->headTitle($this->title);