Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
Alternative.php
Go to the documentation of this file.
1 <?php
8 
12 
16 class Alternative extends Simple
17 {
21  private $alternativeExtensions;
22 
30  public function __construct(
32  \Magento\Framework\View\Design\Fallback\RulePool $rulePool,
33  array $alternativeExtensions = []
34  ) {
35  foreach ($alternativeExtensions as $extension => $newExtensions) {
36  if (!is_string($extension) || !is_array($newExtensions)) {
37  throw new \InvalidArgumentException(
38  "\$alternativeExtensions must be an array with format: "
39  . "array('ext1' => array('ext1', 'ext2'), 'ext3' => array(...)]"
40  );
41  }
42  }
43  $this->alternativeExtensions = $alternativeExtensions;
44  parent::__construct($readFactory, $rulePool);
45  }
46 
50  public function resolveFile(RuleInterface $fallbackRule, $file, array $params = [])
51  {
52  $path = parent::resolveFile($fallbackRule, $file, $params);
53  if (!$path) {
54  $extension = pathinfo($file, PATHINFO_EXTENSION);
55  if (isset($this->alternativeExtensions[$extension])) {
56  foreach ($this->alternativeExtensions[$extension] as $newExtension) {
57  $newFile = substr($file, 0, strlen($file) - strlen($extension)) . $newExtension;
58  $result = parent::resolveFile($fallbackRule, $newFile, $params);
59  if ($result) {
60  $path = $result;
61  break;
62  }
63  }
64  }
65  }
66  return $path;
67  }
68 }
$params[\Magento\Store\Model\StoreManager::PARAM_RUN_CODE]
Definition: website.php:18
resolveFile(RuleInterface $fallbackRule, $file, array $params=[])
Definition: Alternative.php:50
__construct(ReadFactory $readFactory, \Magento\Framework\View\Design\Fallback\RulePool $rulePool, array $alternativeExtensions=[])
Definition: Alternative.php:30