b374k
m1n1 1.01
Apache/2.4.41 (Ubuntu)
Linux vmi616275.contaboserver.net 5.4.0-84-generic #94-Ubuntu SMP Thu Aug 26 20:27:37 UTC 2021 x86_64
uid=33(www-data) gid=33(www-data) groups=33(www-data)
server ip : 62.171.164.128 | your ip : 127.0.0.1
safemode OFF
 >  / home / a / home / dev2.destoffenstraat.com / vendor / magento / framework / View / Result /
Filename/home/a/home/dev2.destoffenstraat.com/vendor/magento/framework/View/Result/Layout.php
Size5.04 kb
Permissionrw-r--r--
Ownerroot : root
Create time21-Aug-2025 12:26
Last modified07-Jan-2021 21:08
Last accessed23-Aug-2025 00:35
Actionsedit | rename | delete | download (gzip)
Viewtext | code | image
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/

namespace Magento\Framework\View\Result;

use Magento\Framework;
use Magento\Framework\App\Response\HttpInterface as HttpResponseInterface;
use Magento\Framework\App\ResponseInterface;
use Magento\Framework\Controller\AbstractResult;
use Magento\Framework\View;

/**
* A generic layout response can be used for rendering any kind of layout
* So it comprises a response body from the layout elements it has and sets it to the HTTP response
*
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
*
* @api
* @since 100.0.2
*/
class Layout extends AbstractResult
{
/**
* @var \Magento\Framework\View\LayoutFactory
*/
protected $layoutFactory;

/**
* @var \Magento\Framework\View\Layout\BuilderFactory
*/
protected $layoutBuilderFactory;

/**
* @var \Magento\Framework\View\Layout\ReaderPool
*/
protected $layoutReaderPool;

/**
* @var \Magento\Framework\View\LayoutInterface
*/
protected $layout;

/**
* @var \Magento\Framework\Translate\InlineInterface
*/
protected $translateInline;

/**
* @var \Magento\Framework\Event\ManagerInterface
*/
protected $eventManager;

/**
* @var \Magento\Framework\App\Request\Http
*/
protected $request;

/**
* Constructor
*
* @param View\Element\Template\Context $context
* @param View\LayoutFactory $layoutFactory
* @param View\Layout\ReaderPool $layoutReaderPool
* @param Framework\Translate\InlineInterface $translateInline
* @param View\Layout\BuilderFactory $layoutBuilderFactory
* @param View\Layout\GeneratorPool $generatorPool
* @param bool $isIsolated
*/
public function __construct(
View\Element\Template\Context $context,
View\LayoutFactory $layoutFactory,
View\Layout\ReaderPool $layoutReaderPool,
Framework\Translate\InlineInterface $translateInline,
View\Layout\BuilderFactory $layoutBuilderFactory,
View\Layout\GeneratorPool $generatorPool,
$isIsolated = false
) {
$this->layoutFactory = $layoutFactory;
$this->layoutBuilderFactory = $layoutBuilderFactory;
$this->layoutReaderPool = $layoutReaderPool;
$this->eventManager = $context->getEventManager();
$this->request = $context->getRequest();
$this->translateInline = $translateInline;
// TODO Shared layout object will be deleted in MAGETWO-28359
$this->layout = $isIsolated
? $this->layoutFactory->create(['reader' => $this->layoutReaderPool, 'generatorPool' => $generatorPool])
: $context->getLayout();
$this->layout->setGeneratorPool($generatorPool);
$this->initLayoutBuilder();
}

/**
* Create layout builder
*
* @return void
*/
protected function initLayoutBuilder()
{
$this->layoutBuilderFactory->create(View\Layout\BuilderFactory::TYPE_LAYOUT, ['layout' => $this->layout]);
}

/**
* Get layout instance for current page
*
* @return \Magento\Framework\View\LayoutInterface
*/
public function getLayout()
{
return $this->layout;
}

/**
* @return $this
*/
public function addDefaultHandle()
{
$this->addHandle($this->getDefaultLayoutHandle());
return $this;
}

/**
* Retrieve the default layout handle name for the current action
*
* @return string
*/
public function getDefaultLayoutHandle()
{
return strtolower($this->request->getFullActionName());
}

/**
* @param string|string[] $handleName
* @return $this
*/
public function addHandle($handleName)
{
$this->getLayout()->getUpdate()->addHandle($handleName);
return $this;
}

/**
* Add update to merge object
*
* @param string $update
* @return $this
*/
public function addUpdate($update)
{
$this->getLayout()->getUpdate()->addUpdate($update);
return $this;
}

/**
* Render current layout
*
* @param HttpResponseInterface|ResponseInterface $httpResponse
* @return $this
*/
public function renderResult(ResponseInterface $httpResponse)
{
\Magento\Framework\Profiler::start('LAYOUT');
\Magento\Framework\Profiler::start('layout_render');

$this->eventManager->dispatch('layout_render_before');
$this->eventManager->dispatch('layout_render_before_' . $this->request->getFullActionName());

$this->applyHttpHeaders($httpResponse);
$this->render($httpResponse);

\Magento\Framework\Profiler::stop('layout_render');
\Magento\Framework\Profiler::stop('LAYOUT');
return $this;
}

/**
* {@inheritdoc}
*/
protected function render(HttpResponseInterface $response)
{
$output = $this->layout->getOutput();
$this->translateInline->processResponseBody($output);
$response->appendBody($output);
return $this;
}
}