Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
Public Member Functions | Data Fields | Protected Member Functions | Protected Attributes
Merge Class Reference
Inheritance diagram for Merge:
ProcessorInterface

Public Member Functions

 __construct (\Magento\Framework\View\DesignInterface $design, \Magento\Framework\Url\ScopeResolverInterface $scopeResolver, \Magento\Framework\View\File\CollectorInterface $fileSource, \Magento\Framework\View\File\CollectorInterface $pageLayoutFileSource, \Magento\Framework\App\State $appState, \Magento\Framework\Cache\FrontendInterface $cache, \Magento\Framework\View\Model\Layout\Update\Validator $validator, \Psr\Log\LoggerInterface $logger, ReadFactory $readFactory, \Magento\Framework\View\Design\ThemeInterface $theme=null, $cacheSuffix='', LayoutCacheKeyInterface $layoutCacheKey=null)
 
 addUpdate ($update)
 
 asArray ()
 
 asString ()
 
 addHandle ($handleName)
 
 removeHandle ($handleName)
 
 getHandles ()
 
 addPageHandles (array $handlesToTry)
 
 pageHandleExists ($handleName)
 
 getPageLayout ()
 
 isLayoutDefined ()
 
 getPageHandles ()
 
 getPageHandleType ($handleName)
 
 load ($handles=[])
 
 asSimplexml ()
 
 validateUpdate ($handle, $updateXml)
 
 getDbUpdateString ($handle)
 
 getFileLayoutUpdatesXml ()
 
 __destruct ()
 
 isCustomerDesignAbstraction (array $abstraction)
 
 isPageLayoutDesignAbstraction (array $abstraction)
 
 getTheme ()
 
 getScope ()
 
 getCacheId ()
 
- Public Member Functions inherited from ProcessorInterface
 getAllDesignAbstractions ()
 
 getContainers ()
 

Data Fields

const DESIGN_ABSTRACTION_CUSTOM = 'custom'
 
const DESIGN_ABSTRACTION_PAGE_LAYOUT = 'page_layout'
 
const XPATH_HANDLE_DECLARATION = '/layout[@design_abstraction]'
 
const TYPE_ATTRIBUTE = 'xsi:type'
 
const PAGE_LAYOUT_CACHE_SUFFIX = 'page_layout'
 

Protected Member Functions

 _getPageHandleNode ($handleName)
 
 _validateMergedLayout ($cacheId, $layout)
 
 _loadXmlString ($xmlString)
 
 _merge ($handle)
 
 _fetchPackageLayoutUpdates ($handle)
 
 _fetchDbLayoutUpdates ($handle)
 
 _substitutePlaceholders ($xmlString)
 
 _fetchRecursiveUpdates ($updateXml)
 
 generateCacheId ($suffix='')
 
 _loadCache ($cacheId)
 
 _saveCache ($data, $cacheId, array $cacheTags=[])
 
 _logXmlErrors ($fileName, $xmlErrors)
 
 _getPhysicalTheme (\Magento\Framework\View\Design\ThemeInterface $theme)
 
 _renderXmlAttributes (\SimpleXMLElement $node)
 

Protected Attributes

 $layoutUpdatesCache
 
 $updates = []
 
 $handles = []
 
 $pageHandles = []
 
 $subst = null
 
 $cache
 
 $layoutValidator
 
 $logger
 
 $pageLayout
 
 $cacheSuffix
 
 $allHandles = []
 
 $handleProcessing = 1
 
 $handleProcessed = 2
 

Detailed Description

Layout merge model @SuppressWarnings(PHPMD.TooManyFields) @SuppressWarnings(PHPMD.CouplingBetweenObjects)

Definition at line 20 of file Merge.php.

Constructor & Destructor Documentation

◆ __construct()

__construct ( \Magento\Framework\View\DesignInterface  $design,
\Magento\Framework\Url\ScopeResolverInterface  $scopeResolver,
\Magento\Framework\View\File\CollectorInterface  $fileSource,
\Magento\Framework\View\File\CollectorInterface  $pageLayoutFileSource,
\Magento\Framework\App\State  $appState,
\Magento\Framework\Cache\FrontendInterface  $cache,
\Magento\Framework\View\Model\Layout\Update\Validator  $validator,
\Psr\Log\LoggerInterface  $logger,
ReadFactory  $readFactory,
\Magento\Framework\View\Design\ThemeInterface  $theme = null,
  $cacheSuffix = '',
LayoutCacheKeyInterface  $layoutCacheKey = null 
)

Init merge model

Parameters
\Magento\Framework\View\DesignInterface$design
\Magento\Framework\Url\ScopeResolverInterface$scopeResolver
\Magento\Framework\View\File\CollectorInterface$fileSource
\Magento\Framework\View\File\CollectorInterface$pageLayoutFileSource
\Magento\Framework\App\State$appState
\Magento\Framework\Cache\FrontendInterface$cache
\Magento\Framework\View\Model\Layout\Update\Validator$validator
\Psr\Log\LoggerInterface$logger
ReadFactory$readFactory

Definition at line 182 of file Merge.php.

195  {
196  $this->theme = $theme ?: $design->getDesignTheme();
197  $this->scope = $scopeResolver->getScope();
198  $this->fileSource = $fileSource;
199  $this->pageLayoutFileSource = $pageLayoutFileSource;
200  $this->appState = $appState;
201  $this->cache = $cache;
202  $this->layoutValidator = $validator;
203  $this->logger = $logger;
204  $this->readFactory = $readFactory;
205  $this->cacheSuffix = $cacheSuffix;
206  $this->layoutCacheKey = $layoutCacheKey
207  ?: \Magento\Framework\App\ObjectManager::getInstance()->get(LayoutCacheKeyInterface::class);
208  }
$theme

◆ __destruct()

__destruct ( )

Cleanup circular references

Destructor should be called explicitly in order to work around the PHP bug https://bugs.php.net/bug.php?id=62468

Definition at line 877 of file Merge.php.

878  {
879  $this->updates = [];
880  $this->layoutUpdatesCache = null;
881  }

Member Function Documentation

◆ _fetchDbLayoutUpdates()

_fetchDbLayoutUpdates (   $handle)
protected

Fetch & add layout updates for the specified handle from the database

Parameters
string$handle
Returns
bool

Definition at line 568 of file Merge.php.

569  {
570  $_profilerKey = 'layout_db_update: ' . $handle;
571  \Magento\Framework\Profiler::start($_profilerKey);
572  $updateStr = $this->getDbUpdateString($handle);
573  if (!$updateStr) {
574  \Magento\Framework\Profiler::stop($_profilerKey);
575  return false;
576  }
577  $updateStr = '<update_xml xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">' .
578  $updateStr .
579  '</update_xml>';
580  $updateStr = $this->_substitutePlaceholders($updateStr);
581  $updateXml = $this->_loadXmlString($updateStr);
582  $this->_fetchRecursiveUpdates($updateXml);
583  $updateInnerXml = $updateXml->innerXml();
584  $this->validateUpdate($handle, $updateInnerXml);
585  $this->addUpdate($updateInnerXml);
586 
587  \Magento\Framework\Profiler::stop($_profilerKey);
588  return (bool)$updateStr;
589  }
validateUpdate($handle, $updateXml)
Definition: Merge.php:603
$handle

◆ _fetchPackageLayoutUpdates()

_fetchPackageLayoutUpdates (   $handle)
protected

Add updates for the specified handle

Parameters
string$handle
Returns
bool

Definition at line 546 of file Merge.php.

547  {
548  $_profilerKey = 'layout_package_update:' . $handle;
549  \Magento\Framework\Profiler::start($_profilerKey);
550  $layout = $this->getFileLayoutUpdatesXml();
551  foreach ($layout->xpath("*[self::handle or self::layout][@id='{$handle}']") as $updateXml) {
552  $this->_fetchRecursiveUpdates($updateXml);
553  $updateInnerXml = $updateXml->innerXml();
554  $this->validateUpdate($handle, $updateInnerXml);
555  $this->addUpdate($updateInnerXml);
556  }
557  \Magento\Framework\Profiler::stop($_profilerKey);
558 
559  return true;
560  }
validateUpdate($handle, $updateXml)
Definition: Merge.php:603
$handle

◆ _fetchRecursiveUpdates()

_fetchRecursiveUpdates (   $updateXml)
protected

Add handles declared as '<update handle="handle_name">' directives

Parameters
\SimpleXMLElement$updateXml
Returns
$this

Definition at line 649 of file Merge.php.

650  {
651  foreach ($updateXml->children() as $child) {
652  if (strtolower($child->getName()) == 'update' && isset($child['handle'])) {
653  $this->_merge((string)$child['handle']);
654  }
655  }
656  if (isset($updateXml['layout'])) {
657  $this->pageLayout = (string)$updateXml['layout'];
658  }
659  return $this;
660  }

◆ _getPageHandleNode()

_getPageHandleNode (   $handleName)
protected

Get handle xml node by handle name

Parameters
string$handleName
Returns
\Magento\Framework\View\Layout\Element|null

Definition at line 347 of file Merge.php.

348  {
349  /* quick validation for non-existing page types */
350  if (!$handleName) {
351  return null;
352  }
353  $handles = $this->getFileLayoutUpdatesXml()->xpath("handle[@id='{$handleName}']");
354  if (empty($handles)) {
355  return null;
356  }
357  $nodes = $this->getFileLayoutUpdatesXml()->xpath("/layouts/handle[@id=\"{$handleName}\"]");
358  return $nodes ? reset($nodes) : null;
359  }

◆ _getPhysicalTheme()

_getPhysicalTheme ( \Magento\Framework\View\Design\ThemeInterface  $theme)
protected

Find the closest physical theme among ancestors and a theme itself

Parameters
\Magento\Framework\View\Design\ThemeInterface$theme
Returns
\Magento\Theme\Model\Theme
Exceptions

Definition at line 814 of file Merge.php.

815  {
816  $result = $theme;
817  while ($result !== null && $result->getId() && !$result->isPhysical()) {
818  $result = $result->getParentTheme();
819  }
820  if (!$result) {
821  throw new \Magento\Framework\Exception\LocalizedException(
822  new \Magento\Framework\Phrase(
823  'Unable to find a physical ancestor for a theme \'%1\'.',
824  [$theme->getThemeTitle()]
825  )
826  );
827  }
828  return $result;
829  }
$theme

◆ _loadCache()

_loadCache (   $cacheId)
protected

Retrieve data from the cache, if the layout caching is allowed, or FALSE otherwise

Parameters
string$cacheId
Returns
string|bool

Definition at line 701 of file Merge.php.

702  {
703  return $this->cache->load($cacheId);
704  }

◆ _loadXmlString()

_loadXmlString (   $xmlString)
protected

Return object representation of XML string

Parameters
string$xmlString
Returns
\SimpleXMLElement

Definition at line 514 of file Merge.php.

515  {
516  return simplexml_load_string($xmlString, \Magento\Framework\View\Layout\Element::class);
517  }

◆ _logXmlErrors()

_logXmlErrors (   $fileName,
  $xmlErrors 
)
protected

Log xml errors to system log

Parameters
string$fileName
array$xmlErrors
Returns
void

Definition at line 783 of file Merge.php.

784  {
785  $this->logger->info(
786  sprintf("Theme layout update file '%s' is not valid.\n%s", $fileName, implode("\n", $xmlErrors))
787  );
788  }
$fileName
Definition: translate.phtml:15

◆ _merge()

_merge (   $handle)
protected

Merge layout update by handle

Parameters
string$handle
Returns
$this

Definition at line 525 of file Merge.php.

526  {
527  if (!isset($this->allHandles[$handle])) {
528  $this->allHandles[$handle] = $this->handleProcessing;
529  $this->_fetchPackageLayoutUpdates($handle);
530  $this->_fetchDbLayoutUpdates($handle);
531  $this->allHandles[$handle] = $this->handleProcessed;
532  } elseif ($this->allHandles[$handle] == $this->handleProcessing
533  && $this->appState->getMode() === \Magento\Framework\App\State::MODE_DEVELOPER
534  ) {
535  $this->logger->info('Cyclic dependency in merged layout for handle: ' . $handle);
536  }
537  return $this;
538  }
elseif(isset( $params[ 'redirect_parent']))
Definition: iframe.phtml:17
$handle

◆ _renderXmlAttributes()

_renderXmlAttributes ( \SimpleXMLElement  $node)
protected

Return attributes of XML node rendered as a string

Parameters
\SimpleXMLElement$node
Returns
string

Definition at line 837 of file Merge.php.

838  {
839  $result = '';
840  foreach ($node->attributes() as $attributeName => $attributeValue) {
841  $result .= ' ' . $attributeName . '="' . $attributeValue . '"';
842  }
843  return $result;
844  }

◆ _saveCache()

_saveCache (   $data,
  $cacheId,
array  $cacheTags = [] 
)
protected

Save data to the cache, if the layout caching is allowed

Parameters
string$data
string$cacheId
array$cacheTags
Returns
void

Definition at line 714 of file Merge.php.

715  {
716  $this->cache->save($data, $cacheId, $cacheTags, null);
717  }

◆ _substitutePlaceholders()

_substitutePlaceholders (   $xmlString)
protected

Substitute placeholders {{placeholder_name}} with their values in XML string

Parameters
string$xmlString
Returns
string

Definition at line 614 of file Merge.php.

615  {
616  if ($this->subst === null) {
617  $placeholders = [
618  'baseUrl' => $this->scope->getBaseUrl(),
619  'baseSecureUrl' => $this->scope->getBaseUrl(\Magento\Framework\UrlInterface::URL_TYPE_LINK, true),
620  ];
621  $this->subst = [];
622  foreach ($placeholders as $key => $value) {
623  $this->subst['from'][] = '{{' . $key . '}}';
624  $this->subst['to'][] = $value;
625  }
626  }
627  return str_replace($this->subst['from'], $this->subst['to'], $xmlString);
628  }
$value
Definition: gender.phtml:16

◆ _validateMergedLayout()

_validateMergedLayout (   $cacheId,
  $layout 
)
protected

Validate merged layout

Parameters
string$cacheId
string$layout
Returns
$this
Exceptions

Definition at line 471 of file Merge.php.

472  {
473  $layoutStr = '<handle id="handle">' . $layout . '</handle>';
474 
475  try {
476  $this->layoutValidator->isValid($layoutStr, Validator::LAYOUT_SCHEMA_MERGED, false);
477  } catch (\Exception $e) {
478  $messages = $this->layoutValidator->getMessages();
479  //Add first message to exception
480  $message = reset($messages);
481  $this->logger->info(
482  'Cache file with merged layout: ' . $cacheId
483  . ' and handles ' . implode(', ', (array)$this->getHandles()) . ': ' . $message
484  );
485  if ($this->appState->getMode() === \Magento\Framework\App\State::MODE_DEVELOPER) {
486  throw $e;
487  }
488  }
489 
490  return $this;
491  }
$message

◆ addHandle()

addHandle (   $handleName)

Add handle(s) to update

Parameters
array | string$handleName
Returns
$this

Implements ProcessorInterface.

Definition at line 250 of file Merge.php.

251  {
252  if (is_array($handleName)) {
253  foreach ($handleName as $name) {
254  $this->handles[$name] = 1;
255  }
256  } else {
257  $this->handles[$handleName] = 1;
258  }
259  return $this;
260  }
if(!isset($_GET['name'])) $name
Definition: log.php:14

◆ addPageHandles()

addPageHandles ( array  $handlesToTry)

Add the first existing (declared in layout updates) page handle along with all parents to the update. Return whether any page handles have been added or not.

Parameters
string[]$handlesToTry
Returns
bool

Implements ProcessorInterface.

Definition at line 291 of file Merge.php.

292  {
293  $handlesAdded = false;
294  foreach ($handlesToTry as $handleName) {
295  if (!$this->pageHandleExists($handleName)) {
296  continue;
297  }
298  $handles[] = $handleName;
299  $this->pageHandles = $handles;
300  $this->addHandle($handles);
301  $handlesAdded = true;
302  }
303  return $handlesAdded;
304  }

◆ addUpdate()

addUpdate (   $update)

Add XML update instruction

Parameters
string$update
Returns
$this

Implements ProcessorInterface.

Definition at line 216 of file Merge.php.

217  {
218  if (!in_array($update, $this->updates)) {
219  $this->updates[] = $update;
220  }
221  return $this;
222  }

◆ asArray()

asArray ( )

Get all registered updates as array

Returns
array

Implements ProcessorInterface.

Definition at line 229 of file Merge.php.

230  {
231  return $this->updates;
232  }

◆ asSimplexml()

asSimplexml ( )

Get layout updates as \Magento\Framework\View\Layout\Element object

Returns
\SimpleXMLElement

Implements ProcessorInterface.

Definition at line 498 of file Merge.php.

499  {
500  $updates = trim($this->asString());
501  $updates = '<?xml version="1.0"?>'
502  . '<layout xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">'
503  . $updates
504  . '</layout>';
505  return $this->_loadXmlString($updates);
506  }

◆ asString()

asString ( )

Get all registered updates as string

Returns
string

Implements ProcessorInterface.

Definition at line 239 of file Merge.php.

240  {
241  return implode('', $this->updates);
242  }

◆ generateCacheId()

generateCacheId (   $suffix = '')
protected

Generate cache identifier taking into account current area/package/theme/store

Parameters
string$suffix
Returns
string

Definition at line 690 of file Merge.php.

691  {
692  return "LAYOUT_{$this->theme->getArea()}_STORE{$this->scope->getId()}_{$this->theme->getId()}{$suffix}";
693  }

◆ getCacheId()

getCacheId ( )

Return cache ID based current area/package/theme/store and handles

Returns
string

Implements ProcessorInterface.

Definition at line 930 of file Merge.php.

931  {
932  $layoutCacheKeys = $this->layoutCacheKey->getCacheKeys();
933  return $this->generateCacheId(md5(implode('|', array_merge($this->getHandles(), $layoutCacheKeys))));
934  }

◆ getDbUpdateString()

getDbUpdateString (   $handle)

Get update string

Parameters
string$handle
Returns
string

@SuppressWarnings(PHPMD.UnusedFormalParameter)

Definition at line 638 of file Merge.php.

639  {
640  return null;
641  }

◆ getFileLayoutUpdatesXml()

getFileLayoutUpdatesXml ( )

Retrieve already merged layout updates from files for specified area/theme/package/store

Returns
\Magento\Framework\View\Layout\Element

Implements ProcessorInterface.

Definition at line 667 of file Merge.php.

668  {
669  if ($this->layoutUpdatesCache) {
671  }
672  $cacheId = $this->generateCacheId($this->cacheSuffix);
673  $result = $this->_loadCache($cacheId);
674  if ($result) {
675  $result = $this->_loadXmlString($result);
676  } else {
677  $result = $this->_loadFileLayoutUpdatesXml();
678  $this->_saveCache($result->asXML(), $cacheId);
679  }
680  $this->layoutUpdatesCache = $result;
681  return $result;
682  }
_saveCache($data, $cacheId, array $cacheTags=[])
Definition: Merge.php:714

◆ getHandles()

getHandles ( )

Get handle names array

Returns
array

Implements ProcessorInterface.

Definition at line 279 of file Merge.php.

280  {
281  return array_keys($this->handles);
282  }

◆ getPageHandles()

getPageHandles ( )

Retrieve used page handle names sorted from parent to child

Returns
array

Definition at line 366 of file Merge.php.

367  {
368  return $this->pageHandles;
369  }

◆ getPageHandleType()

getPageHandleType (   $handleName)

Retrieve the type of a page handle

Parameters
string$handleName
Returns
string|null

Definition at line 415 of file Merge.php.

416  {
417  $node = $this->_getPageHandleNode($handleName);
418  return $node ? $node->getAttribute('type') : null;
419  }

◆ getPageLayout()

getPageLayout ( )
Returns
string|null

Definition at line 320 of file Merge.php.

◆ getScope()

getScope ( )

Retrieve current scope

Returns
\Magento\Framework\Url\ScopeInterface

Definition at line 920 of file Merge.php.

921  {
922  return $this->scope;
923  }

◆ getTheme()

getTheme ( )

Retrieve theme

Returns
\Magento\Framework\View\Design\ThemeInterface

Definition at line 910 of file Merge.php.

911  {
912  return $this->theme;
913  }
$theme

◆ isCustomerDesignAbstraction()

isCustomerDesignAbstraction ( array  $abstraction)

Check custom design abstractions that exist in the system

Parameters
array$abstraction
Returns
bool

Implements ProcessorInterface.

Definition at line 886 of file Merge.php.

887  {
888  if (!isset($abstraction['design_abstraction'])) {
889  return false;
890  }
891  return $abstraction['design_abstraction'] === self::DESIGN_ABSTRACTION_CUSTOM;
892  }

◆ isLayoutDefined()

isLayoutDefined ( )

Check current handles if layout was defined on it

Returns
bool

Definition at line 330 of file Merge.php.

331  {
332  $fullLayoutXml = $this->getFileLayoutUpdatesXml();
333  foreach ($this->getHandles() as $handle) {
334  if ($fullLayoutXml->xpath("layout[@id='{$handle}']")) {
335  return true;
336  }
337  }
338  return false;
339  }
$handle

◆ isPageLayoutDesignAbstraction()

isPageLayoutDesignAbstraction ( array  $abstraction)

Check page_layout design abstractions that exist in the system

Parameters
array$abstraction
Returns
bool

Implements ProcessorInterface.

Definition at line 897 of file Merge.php.

898  {
899  if (!isset($abstraction['design_abstraction'])) {
900  return false;
901  }
902  return $abstraction['design_abstraction'] === self::DESIGN_ABSTRACTION_PAGE_LAYOUT;
903  }

◆ load()

load (   $handles = [])

Load layout updates by handles

Parameters
array | string$handles
Exceptions

Implements ProcessorInterface.

Definition at line 428 of file Merge.php.

429  {
430  if (is_string($handles)) {
431  $handles = [$handles];
432  } elseif (!is_array($handles)) {
433  throw new \Magento\Framework\Exception\LocalizedException(
434  new \Magento\Framework\Phrase('Invalid layout update handle')
435  );
436  }
437 
438  $this->addHandle($handles);
439 
440  $cacheId = $this->getCacheId();
441  $cacheIdPageLayout = $cacheId . '_' . self::PAGE_LAYOUT_CACHE_SUFFIX;
442  $result = $this->_loadCache($cacheId);
443  if ($result) {
444  $this->addUpdate($result);
445  $this->pageLayout = $this->_loadCache($cacheIdPageLayout);
446  foreach ($this->getHandles() as $handle) {
447  $this->allHandles[$handle] = $this->handleProcessed;
448  }
449  return $this;
450  }
451 
452  foreach ($this->getHandles() as $handle) {
453  $this->_merge($handle);
454  }
455 
456  $layout = $this->asString();
457  $this->_validateMergedLayout($cacheId, $layout);
458  $this->_saveCache($layout, $cacheId, $this->getHandles());
459  $this->_saveCache((string)$this->pageLayout, $cacheIdPageLayout, $this->getHandles());
460  return $this;
461  }
elseif(isset( $params[ 'redirect_parent']))
Definition: iframe.phtml:17
_saveCache($data, $cacheId, array $cacheTags=[])
Definition: Merge.php:714
_validateMergedLayout($cacheId, $layout)
Definition: Merge.php:471
$handle

◆ pageHandleExists()

pageHandleExists (   $handleName)

Whether a page handle is declared in the system or not

Parameters
string$handleName
Returns
bool

Definition at line 312 of file Merge.php.

313  {
314  return (bool)$this->_getPageHandleNode($handleName);
315  }

◆ removeHandle()

removeHandle (   $handleName)

Remove handle from update

Parameters
string$handleName
Returns
$this

Implements ProcessorInterface.

Definition at line 268 of file Merge.php.

269  {
270  unset($this->handles[$handleName]);
271  return $this;
272  }

◆ validateUpdate()

validateUpdate (   $handle,
  $updateXml 
)

Validate layout update content, throw exception on failure.

This method is used as a hook for plugins.

Parameters
string$handle
string$updateXml
Returns
void
Exceptions

Definition at line 603 of file Merge.php.

604  {
605  return;
606  }

Field Documentation

◆ $allHandles

$allHandles = []
protected

Definition at line 144 of file Merge.php.

◆ $cache

$cache
protected

Definition at line 117 of file Merge.php.

◆ $cacheSuffix

$cacheSuffix
protected

Definition at line 137 of file Merge.php.

◆ $handleProcessed

$handleProcessed = 2
protected

Definition at line 158 of file Merge.php.

◆ $handleProcessing

$handleProcessing = 1
protected

Definition at line 151 of file Merge.php.

◆ $handles

$handles = []
protected

Definition at line 76 of file Merge.php.

◆ $layoutUpdatesCache

$layoutUpdatesCache
protected

Definition at line 62 of file Merge.php.

◆ $layoutValidator

$layoutValidator
protected

Definition at line 122 of file Merge.php.

◆ $logger

$logger
protected

Definition at line 127 of file Merge.php.

◆ $pageHandles

$pageHandles = []
protected

Definition at line 83 of file Merge.php.

◆ $pageLayout

$pageLayout
protected

Definition at line 132 of file Merge.php.

◆ $subst

$subst = null
protected

Definition at line 90 of file Merge.php.

◆ $updates

$updates = []
protected

Definition at line 69 of file Merge.php.

◆ DESIGN_ABSTRACTION_CUSTOM

const DESIGN_ABSTRACTION_CUSTOM = 'custom'

Layout abstraction based on designer prerogative.

Definition at line 25 of file Merge.php.

◆ DESIGN_ABSTRACTION_PAGE_LAYOUT

const DESIGN_ABSTRACTION_PAGE_LAYOUT = 'page_layout'

Layout generalization guaranteed to load into View

Definition at line 30 of file Merge.php.

◆ PAGE_LAYOUT_CACHE_SUFFIX

const PAGE_LAYOUT_CACHE_SUFFIX = 'page_layout'

Cache id suffix for page layout

Definition at line 45 of file Merge.php.

◆ TYPE_ATTRIBUTE

const TYPE_ATTRIBUTE = 'xsi:type'

Name of an attribute that stands for data type of node values

Definition at line 40 of file Merge.php.

◆ XPATH_HANDLE_DECLARATION

const XPATH_HANDLE_DECLARATION = '/layout[@design_abstraction]'

XPath of handles originally declared in layout updates

Definition at line 35 of file Merge.php.


The documentation for this class was generated from the following file: