48 private $versionStorage;
66 \Psr\Log\LoggerInterface
$logger,
70 \
Magento\Framework\
App\View\Deployment\Version\StorageInterface $versionStorage =
null 74 $this->assetRepo = $assetRepo;
76 \
Magento\Framework\
App\View\Deployment\Version\StorageInterface::class
80 throw new \InvalidArgumentException(
'At least one asset has to be passed for merging.');
85 throw new \InvalidArgumentException(
86 'Asset has to implement \Magento\Framework\View\Asset\MergeableInterface.' 89 if (!$this->contentType) {
90 $this->contentType = $asset->getContentType();
92 throw new \InvalidArgumentException(
93 "Content type '{$asset->getContentType()}' cannot be merged with '{$this->contentType}'." 107 if (!$this->isInitialized) {
108 $this->isInitialized =
true;
110 $mergedAsset = $this->createMergedAsset($this->assets);
111 $this->mergeStrategy->merge($this->assets, $mergedAsset);
112 $this->assets = [$mergedAsset];
113 }
catch (\Exception $e) {
114 $this->logger->critical($e);
125 private function createMergedAsset(array
$assets)
130 $paths[] = $asset->getPath();
134 $version = $this->versionStorage->load();
140 return $this->assetRepo->createArbitrary($filePath, self::getRelativeDir());
160 return key($this->assets);
178 reset($this->assets);
187 return (
bool)
current($this->assets);
197 return self::CACHE_VIEW_REL .
'/merged';
elseif(isset( $params[ 'redirect_parent']))
__construct( $fileName, $sourcePath=null, $area=null, $theme=null, $locale=null, $module=null)