#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();