1
<?php
namespace Inventionary;
use Zend\Mvc\ModuleRouteListener;
use Zend\Mvc\MvcEvent;
class Module
{
public function onBootstrap(MvcEvent $e)
{
$eventManager = $e->getApplication()->getEventManager();
$moduleRouteListener = new ModuleRouteListener();
$moduleRouteListener->attach($eventManager);
$eventManager->attach(MvcEvent::EVENT_DISPATCH, [$this, 'OnDispatch']);
$eventManager->attach(MvcEvent::EVENT_RENDER, [$this, 'OnRender']);
}
public function getConfig()
{
return include __DIR__ . '/config/module.config.php';
}
public function getAutoloaderConfig()
{
return array(
'Zend\Loader\StandardAutoloader' => array(
'namespaces' => array(
__NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__,
),
),
);
}
public function onDispatch(MvcEvent $e)
{
xdebug_var_dump("Route Dispatch");
xdebug_var_dump($e->getRouteMatch());
$e->stopPropagation(true);
xdebug_var_dump($e->propagationIsStopped());
//return new \Zend\Http\Response();
}
public function onRender(MvcEvent $e)
{
xdebug_var_dump("Before Render");
xdebug_var_dump($e->getRequest()->getMetadata());
xdebug_var_dump($e->getRouteMatch());
}
}
私はStopPropogation()ON_DISPATCHイベントでない短絡
"を前にレンダリング" しかし、それはそれを見せているを見ないように期待していました。
応答オブジェクトをonDispatch()から返すと、期待どおりに動作しています。 stopPropogation()がonRender()コールバックのトリガを妨げない理由を詳細に説明してください。 Response
オブジェクトを返さずに動作させる方法私は内部的にどう働いているのかははっきりしていません。
'Response'オブジェクトを返すことと、setPropogation()を使用してattatch()のコールバックからfalseを返すことの違いは何ですか?彼らはすべて短絡すると考えています – varuog