Zend Framework: view var set в начальной загрузке недоступен в скриптах вида? - PullRequest
2 голосов
/ 27 апреля 2010

Я установил переменную представления в файле начальной загрузки так:

protected function _initVars()
{
    $this->bootstrap('layout');
    $layout = $this->getResource('layout');
    $view = $layout->getView();
    $view->theme = 'MY_THEME';
}

В моем application.ini также есть следующая строка:

resources.view[] =

Но скрипты изнутри,

<?php echo $this->theme ?> 

ничего не печатает.

Пожалуйста, предложите?

Редактировать

Я мог бы использовать все функции, но это переменные представления, которые почему-то не отражаются.

Ответы [ 3 ]

1 голос
/ 28 апреля 2010

Вы забыли вернуть объект просмотра. возврат $ view;

0 голосов
/ 27 апреля 2010

Это мое и прекрасно работает для меня ............. я надеюсь, что это поможет

 protected function _initLayoutView() {
            $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.4.2.min.js') , "text/javascript")
                    ->appendFile($view->baseUrl('js/jquery-ui.min.js') , "text/javascript")
                    ->appendFile($view->baseUrl('js/swfobject/swfobject.js') , "text/javascript");
            $view -> headTitle('title ');
            $view -> headTitle() -> setSeparator( ' : ' );
            $trackerId = 'UA-xxxxxxxx-4';
            $googleAnalytics = $view->GoogleAnalytics($trackerId);
            return $view ;
        }

и в представлении, например, я делаю что-то вроде: <?php echo $this->GoogleAnalytics(); ?> В любом случае вы можете добавить последнюю точку с запятой в <?php echo $this->theme ?> как <?php echo $this->theme; ?> Я знаю, это звучит безумно, но я предпочитаю придерживаться правил

0 голосов
/ 27 апреля 2010

Ускорение просмотра с помощью метода init работает для меня

protected function _initView()
{
    $view = new Zend_View;
    $view->setEncoding('UTF-8');
    $view->doctype('XHTML1_TRANSITIONAL');

    $viewRenderer = new Zend_Controller_Action_Helper_ViewRenderer($view);
    Zend_Controller_Action_HelperBroker::addHelper($viewRenderer);

    $view->SOME_VAR = 'SOME_VALUE';

    return $view;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...