繁体   English   中英

禁用Zend开发人员工具

[英]Disable Zend Developer Tools

如何在特定控制器中禁用ZF2开发人员工具?

我已经尝试过返回终端ViewModel,但它仍会呈现。

您可以创建自己的侦听器,该侦听器将在基于特定控制器分离事件的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');
        }
    }

}

然后,您只需要将此侦听器附加到模块的onBootstrap方法中,它就可以完成您想要的工作。

暂无
暂无

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

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