/** * Обрабатывает результат запроса по всему стеку вызова компонентов. * @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; }