ViewFactory.php 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Framework\Config;
  7. use Magento\Framework\ObjectManagerInterface;
  8. class ViewFactory
  9. {
  10. /**
  11. * @var \Magento\Framework\ObjectManagerInterface
  12. */
  13. private $objectManager;
  14. /**
  15. * Constructor
  16. *
  17. * @param \Magento\Framework\ObjectManagerInterface $objectManager
  18. */
  19. public function __construct(ObjectManagerInterface $objectManager)
  20. {
  21. $this->objectManager = $objectManager;
  22. }
  23. /**
  24. * Create new view object
  25. *
  26. * @param array $arguments
  27. * @return \Magento\Framework\Config\View
  28. * @throws \Magento\Framework\Exception\LocalizedException
  29. */
  30. public function create(array $arguments = [])
  31. {
  32. $viewConfigArguments = [];
  33. if (isset($arguments['themeModel']) && isset($arguments['area'])) {
  34. if (!($arguments['themeModel'] instanceof \Magento\Framework\View\Design\ThemeInterface)) {
  35. throw new \Magento\Framework\Exception\LocalizedException(
  36. new \Magento\Framework\Phrase('%1 doesn\'t implement ThemeInterface', [$arguments['themeModel']])
  37. );
  38. }
  39. /** @var \Magento\Theme\Model\View\Design $design */
  40. $design = $this->objectManager->create(\Magento\Theme\Model\View\Design::class);
  41. $design->setDesignTheme($arguments['themeModel'], $arguments['area']);
  42. /** @var \Magento\Framework\Config\FileResolver $fileResolver */
  43. $fileResolver = $this->objectManager->create(
  44. \Magento\Framework\Config\FileResolver::class,
  45. [
  46. 'designInterface' => $design,
  47. ]
  48. );
  49. $viewConfigArguments['fileResolver'] = $fileResolver;
  50. }
  51. return $this->objectManager->create(
  52. \Magento\Framework\Config\View::class,
  53. $viewConfigArguments
  54. );
  55. }
  56. }