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

#php #zend-framework #bootstrapping

#php #zend-framework #загрузка

Вопрос:

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

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

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

 $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). Возвращает значение null.

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

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

Комментарии:

1. Зачем вам нужно это делать? Вы можете установить переменные в вашем контроллере.

2. как называется ваш метод в вашем bootstrap?

3. это был _initView . Теперь я изменил его, и это работает. _initView должен использоваться платформой. Спасибо за предложения.

Ответ №1:

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

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

Комментарии:

1. Почему вы добавляете к методу префикс подчеркивания? Это был возврат к php 4.x для указания области действия до того, как появились ключевые слова для разрешения области действия, такие как protected, public и private.

2. Почему все методы, которые должны выполняться загрузчиком, должны начинаться с _init*

3. Теперь я решил эту проблему. Оказывается, это было просто название метода. Он назывался _initView, я изменил его на _initViewStuff, и теперь он работает, поэтому я предполагаю, что _initView используется где-то еще в процессе начальной загрузки.

4. правильно! _initView — это внутренний метод, возможно, с чем у вас были проблемы! Проголосуйте, пожалуйста 😉

Ответ №2:

 $view = $this->getPluginResource('view')->getView();