Начальная загрузка представления

У меня проблема с загрузкой представления в моем приложении.

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

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

$this->bootstrap('layout');
$layout = $this->getResource('layout');
$view = $layout->getView();

и это работает нормально. get_class($view) возвращает Zend_View.

Но если я сделаю:

$this->bootstrap('view');
$view = $this->getResource('view');

Я получаю пустой экран, и если я делаю get_class($view). Он возвращает ноль.

Я добавил resources.view[] = в свой application.ini.

Любые мысли о том, почему это не сработает? Я успешно использовал второй бит кода в других проектах в прошлом, но не вижу причин, по которым он не будет работать в этом проекте.


person steven1978    schedule 09.11.2011    source источник
comment
Почему вам нужно это делать? Вы можете установить переменные в вашем контроллере.   -  person Aurelio De Rosa    schedule 09.11.2011
comment
как называется ваш метод в вашем бутстрапе?   -  person JF Dion    schedule 09.11.2011
comment
это был _initView. Сейчас поменял и все работает. _initView должен использоваться фреймворком. Спасибо за предложения.   -  person steven1978    schedule 09.11.2011


Ответы (1)


попробуйте это в Bootstrap.php:

protected function _initViewAdditionalParameters()
{
    $this->bootstrap('view');
    $view = $this->getResource('view');
}
person JellyBelly    schedule 09.11.2011
comment
Почему вы ставите перед методом подчеркивание? Это был возврат к php 4.x для обозначения области до того, как появились ключевые слова разрешения области, такие как protected, public и private. - person Mike Purcell; 09.11.2011
comment
Почему все методы, которые должен выполнять Bootstrap, должны начинаться с _init* - person JellyBelly; 09.11.2011
comment
Я решил это сейчас. Оказывается, это было просто имя метода. Он назывался _initView, я изменил его на _initViewStuff, и теперь он работает, поэтому я предполагаю, что _initView используется где-то еще в процессе начальной загрузки. - person steven1978; 09.11.2011
comment
правильный! _initView — это внутренний метод, возможно, с чем у вас были проблемы! Ставьте голос, пожалуйста ;) - person JellyBelly; 09.11.2011