/** * Base fallback action. * Will be basically used for every legacy module. * * @return \eZ\Bundle\EzPublishLegacyBundle\LegacyResponse */ public function indexAction() { $kernelClosure = $this->kernelClosure; /** @var \eZ\Publish\Core\MVC\Legacy\Kernel $kernel */ $kernel = $kernelClosure(); $legacyMode = $this->configResolver->getParameter('legacy_mode'); //Empêche le front d'aller dans de l'eZ legacy if (!$legacyMode && substr($this->request->getPathInfo(), 0, 18) != '/content/download/') { throw new NotFoundHttpException('Adresse non trouvée'); } $kernel->setUseExceptions(false); // Fix up legacy URI with current request since we can be in a sub-request here. $this->uriHelper->updateLegacyURI($this->request); // If we have a layout for legacy AND we're not in legacy mode, we ask the legacy kernel not to generate layout. if (isset($this->legacyLayout) && !$legacyMode) { $kernel->setUsePagelayout(false); } $result = $kernel->run(); $kernel->setUseExceptions(true); if ($result instanceof ezpKernelRedirect) { return $this->legacyResponseManager->generateRedirectResponse($result); } $this->legacyHelper->loadDataFromModuleResult($result->getAttribute('module_result')); $response = $this->legacyResponseManager->generateResponseFromModuleResult($result); $this->legacyResponseManager->mapHeaders(headers_list(), $response); return $response; }
/** * @dataProvider generateResponseWithCustomLayoutProvider */ public function testGenerateResponseWithCustomLayout($customLayout, $content) { $contentWithLayout = "<div id=\"i-am-a-twig-layout\">{$content}</div>"; $moduleResult = array('content' => $content, 'errorCode' => 200); $this->configResolver->expects($this->any())->method('getParameter')->will($this->returnValueMap(array(array('module_default_layout', 'ezpublish_legacy', null, $customLayout), array('legacy_mode', null, null, false)))); $this->templateEngine->expects($this->once())->method('render')->with($customLayout, array('module_result' => $moduleResult))->will($this->returnValue($contentWithLayout)); $manager = new LegacyResponseManager($this->templateEngine, $this->configResolver); $kernelResult = new ezpKernelResult($content, array('module_result' => $moduleResult)); $response = $manager->generateResponseFromModuleResult($kernelResult); $this->assertInstanceOf('eZ\\Bundle\\EzPublishLegacyBundle\\LegacyResponse', $response); $this->assertSame($contentWithLayout, $response->getContent()); $this->assertSame($moduleResult['errorCode'], $response->getStatusCode()); $this->assertSame($moduleResult, $response->getModuleResult()); }