Zend: Как получить представление в Bootstrap.php? - PullRequest
3 голосов
/ 14 мая 2011

Я хочу установить заголовок веб-страницы в 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

Как я могу получить представление?Я также пытался это .

Ответы [ 5 ]

6 голосов
/ 15 мая 2011

@ ArneRie близок, но синтаксис неверен.Это из быстрого старта :

protected function _initDoctype()
{
    $this->bootstrap('view');
    $view = $this->getResource('view');
    $view->doctype('XHTML1_STRICT');
    // but what you really want is
    $view->headTitle('My title');
}
5 голосов
/ 14 мая 2011

Вы, вероятно, пытаетесь получить доступ к экземпляру до его запуска. Попробуйте

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

Однако, startMVC может быть передан аргумент $options, который может быть либо путем к папке макета в виде строки, либо массива, либо экземпляром Zend_Config, который будет установлен в экземпляр MVC. ZF обычно передает это автоматически на более позднем этапе из вашего application.ini. Я не знаю, как ваше приложение будет себя вести, если вы не передадите его.

Лучшим выбором было бы иметь Плагин ресурсов или Плагин контроллера . См. На связанных страницах примеры таких примеров, а также см. Исходный код для Zend_Layout для подробностей реализации.

2 голосов
/ 15 мая 2011

У меня сейчас работает:

In Bootstrap.php

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

В любом представлении / .phtml

<?php 
    $this->headTitle()->prepend('Page Title');
    echo $this->headTitle();
?>
1 голос
/ 23 июня 2012
$this->title = "Edit album";
$this->headTitle($this->title);
1 голос
/ 14 мая 2011

Вы можете попробовать:

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