简体   繁体   English

禁用Zend开发人员工具

[英]Disable Zend Developer Tools

How can I disable ZF2 developer tools in a particular controller? 如何在特定控制器中禁用ZF2开发人员工具?

I've already tried returning an terminal ViewModel, but it still renders. 我已经尝试过返回终端ViewModel,但它仍会呈现。

You could create your own listener that fires before the zdt logic that detaches the events based on a specific controller. 您可以创建自己的侦听器,该侦听器将在基于特定控制器分离事件的zdt逻辑之前触发。

<?php
namespace Application\Listener;

use Zend\EventManager\AbstractListenerAggregate;
use Zend\Mvc\MvcEvent;
use Zend\ServiceManager\ServiceLocatorInterface;

class DetachZdtListener extends AbstractListenerAggregate
{

    protected $listeners = array();

    protected $serviceLocator;

    public function __construct(ServiceLocatorInterface $serviceLocator)
    {
        $this->serviceLocator = $serviceLocator;
    }

    public function attach(\Zend\EventManager\EventManagerInterface $events)
    {
        // Attach a listener to the finish event that has a priority sooner
        // than the ZDT listener(s)
        $this->listeners[] = $events->attach(MvcEvent::EVENT_FINISH,
            array($this, 'onFinish'), -9499
        );

    }

    /**
     * The method called when event is fired
     *
     * @param \Zend\Mvc\MvcEvent $e
     */
    public function onFinish(MvcEvent $e) {

        $controller = $e->getController();

        if ($controller === 'Application\Controller\SomeController') {

            $sm = $this->serviceLocator;

            $eventManager = $e->getApplication()->getEventManager();
            $sharedEventManager = $eventManager->getSharedManager();

            $eventManager->detachAggregate($sm->get('ZendDeveloperTools\FlushListener'));
            $eventManager->detachAggregate($sm->get('ZendDeveloperTools\ProfilerListener'));

            $sharedEventManager->clearListeners('profiler');
        }
    }

}

Then you would just need to attach this listener in the onBootstrap method of one fo your modules, and it should do what you're looking for. 然后,您只需要将此侦听器附加到模块的onBootstrap方法中,它就可以完成您想要的工作。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM