Example #1
0
 /**
  * Обрабатывает результат запроса по всему стеку вызова компонентов.
  * @param Response $response
  * @param SplStack $callStack
  * @return Response
  */
 protected function processResponse(Response $response, SplStack $callStack)
 {
     /**
      * @var IDispatchContext $context
      */
     foreach ($callStack as $context) {
         $component = $context->getComponent();
         if (!$response->getIsCompleted()) {
             if ($component->hasController(IComponent::LAYOUT_CONTROLLER)) {
                 $layoutController = $component->getController(IComponent::LAYOUT_CONTROLLER, [$response])->setContext($context)->setRequest($this->getCurrentRequest());
                 $response = $this->invokeController($layoutController);
             }
         }
         $response = $component->onDispatchResponse($context, $response);
     }
     return $response;
 }