예제 #1
0
 /**
  * Retrieve files
  *
  * @param \Magento\Framework\View\Design\ThemeInterface $theme
  * @param string $filePath
  * @return \Magento\Framework\View\File[]
  */
 public function getFiles(ThemeInterface $theme, $filePath)
 {
     $result = [];
     $sharedFiles = $this->componentDirSearch->collectFilesWithContext(ComponentRegistrar::MODULE, "view/base/{$this->subDir}{$filePath}");
     foreach ($sharedFiles as $file) {
         $result[] = $this->fileFactory->create($file->getFullPath(), $file->getComponentName(), null, true);
     }
     $area = $theme->getData('area');
     $themeFiles = $this->componentDirSearch->collectFilesWithContext(ComponentRegistrar::MODULE, "view/{$area}/{$this->subDir}{$filePath}");
     foreach ($themeFiles as $file) {
         $result[] = $this->fileFactory->create($file->getFullPath(), $file->getComponentName());
     }
     return $result;
 }
예제 #2
0
 public function testCollectFilesWithContext()
 {
     $componentType = 'component_type';
     $componentPaths = ['component1' => 'path1', 'component2' => 'path2'];
     $pattern = '*/file.xml';
     $this->registrar->expects($this->once())->method('getPaths')->with($componentType)->willReturn($componentPaths);
     $this->readFactory->expects($this->exactly(2))->method('create')->willReturnMap([['path1', DriverPool::FILE, $this->dir], ['path2', DriverPool::FILE, $this->dir]]);
     $this->dir->method('search')->with($pattern)->willReturnOnConsecutiveCalls(['one/file.xml'], ['two/file.xml']);
     $actualFiles = $this->object->collectFilesWithContext($componentType, $pattern);
     $this->assertNotEmpty($actualFiles);
     /** @var \Magento\Framework\Component\ComponentFile $file */
     foreach ($actualFiles as $file) {
         $this->assertInstanceOf('\\Magento\\Framework\\Component\\ComponentFile', $file);
         $this->assertSame($componentType, $file->getComponentType());
     }
     $this->assertCount(2, $actualFiles);
     $this->assertSame('component1', $actualFiles[0]->getComponentName());
     $this->assertSame('one/file.xml', $actualFiles[0]->getFullPath());
     $this->assertSame('component2', $actualFiles[1]->getComponentName());
     $this->assertSame('two/file.xml', $actualFiles[1]->getFullPath());
 }