Arhn - архитектура программирования

Не удается вызвать setNoRender() для viewRenderer в postDispatch() в подключаемом модуле контроллера Zend Framework

Вызов setNoRender() или любых методов помощника viewRenderer, похоже, не влияет на плагин контроллера.

class TestPlugin extends Zend_Controller_Plugin_Abstract
{
    public function postDispatch(Zend_Controller_Request_Abstract $request)
    {
        $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer');
        $viewRenderer->setNoRender();
    }
}

Сценарий просмотра по-прежнему отображается. И плагин определенно работает, так как я могу поместить сюда эхо, и они будут выводиться.

24.03.2011

Ответы:


1

Вам нужно будет поместить это в свой postDispatch вашего плагина контроллера.

$viewRenderer = Zend_Controller_Action_HelperBroker::getExistingHelper('viewRenderer');
$viewRenderer->setNeverRender(true);
24.03.2011

2

Работает ли это в любых других хуках, например preDispatch()?

24.03.2011
  • Никто из них. preDispatch, postDispatch, dispatchLoopStartup, dispatchLoopShutdown, routeStartup, routeShutdown — похоже, ни один из них не работает с viewRenderer. 24.03.2011
  • попробуйте получить экземпляр frontcontroller, затем вызовите $front-›setParam('noViewRenderer', TRUE); Хотя это будет работать только в preDispatch() 24.03.2011
  • Установка «noViewRenderer» в качестве параметра фактически отключит полное представление, а не отрисовывает его. 24.03.2011
  • $this-›_helper-›viewRenderer-›setNoRender(); 21.04.2011

  • 3

    на случай, если кто-то захочет отключить как макет, так и просмотр с помощью плагина контроллера, вот хук preDispatch, который я получил с помощью разных статей и ответов, включая этот. Надеюсь кому-то поможет и сэкономит время.

    // in Controller Plugin
    public function preDispatch(){
            //if  its an AJAX request then disable layout and view.
            if ($this->_request->isXmlHttpRequest() || isset($_GET['ajax'])){
                // disable layout
                $layout = Zend_Controller_Action_HelperBroker::getExistingHelper('Layout');
                $layout->disableLayout();
                // disable view
                $viewRenderer = Zend_Controller_Action_HelperBroker::getExistingHelper('viewRenderer');
                $viewRenderer->setNeverRender(true);
            }
        }
    
    25.02.2012
  • Пожалуйста. Я использовал его в Zend Framework 1.11. Не уверен, что он все еще действителен для Zend Framework 2. 03.07.2014

  • 4

    Я также не мог понять, как это сделать из скрипта инициализации плагина контроллера. Однако есть простой обходной путь. Вы можете сделать это в preDispatch вашего базового контроллера с помощью следующего стандартного кода:

    $this->_helper->viewRenderer->setNoRender(true);
    

    Все ваши контроллеры должны наследоваться от этого базового контроллера, который расширяет Zend_Controller_Action.

    10.05.2011
    Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..