Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
Config.php
Go to the documentation of this file.
1 <?php
7 
12 
16 class Config extends ConfigData
17 {
18  const DEFAULT_ADDRESS_RENDERER = \Magento\Customer\Block\Address\Renderer\DefaultRenderer::class;
19 
20  const XML_PATH_ADDRESS_TEMPLATE = 'customer/address_templates/';
21 
22  const DEFAULT_ADDRESS_FORMAT = 'oneline';
23 
29  protected $_types = [];
30 
36  protected $_store = null;
37 
43  protected $_defaultTypes = [];
44 
48  protected $_storeManager;
49 
53  protected $_addressHelper;
54 
58  protected $_scopeConfig;
59 
71  public function __construct(
72  \Magento\Customer\Model\Address\Config\Reader $reader,
73  \Magento\Framework\Config\CacheInterface $cache,
75  \Magento\Customer\Helper\Address $addressHelper,
76  \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig,
77  $cacheId = 'address_format',
79  ) {
80  parent::__construct($reader, $cache, $cacheId, $serializer);
81  $this->_storeManager = $storeManager;
82  $this->_addressHelper = $addressHelper;
83  $this->_scopeConfig = $scopeConfig;
84  }
85 
92  public function setStore($store)
93  {
94  $this->_store = $this->_storeManager->getStore($store);
95  return $this;
96  }
97 
103  public function getStore()
104  {
105  if ($this->_store === null) {
106  $this->_store = $this->_storeManager->getStore();
107  }
108  return $this->_store;
109  }
110 
116  public function getFormats()
117  {
118  $store = $this->getStore();
119  $storeId = $store->getId();
120 
121  if (!isset($this->_types[$storeId])) {
122  $this->_types[$storeId] = [];
123  foreach ($this->get() as $typeCode => $typeConfig) {
124  $path = sprintf('%s%s', self::XML_PATH_ADDRESS_TEMPLATE, $typeCode);
125  $type = new DataObject();
126  if (isset($typeConfig['escapeHtml'])) {
127  $escapeHtml = $typeConfig['escapeHtml'] == 'true' || $typeConfig['escapeHtml'] == '1';
128  } else {
129  $escapeHtml = false;
130  }
131 
132  $type->setCode($typeCode)
133  ->setTitle((string)$typeConfig['title'])
134  ->setDefaultFormat($this->_scopeConfig->getValue($path, ScopeInterface::SCOPE_STORE, $store))
135  ->setEscapeHtml($escapeHtml);
136 
137  $renderer = isset($typeConfig['renderer']) ? (string)$typeConfig['renderer'] : null;
138  if (!$renderer) {
139  $renderer = self::DEFAULT_ADDRESS_RENDERER;
140  }
141 
142  $type->setRenderer($this->_addressHelper->getRenderer($renderer)->setType($type));
143 
144  $this->_types[$storeId][] = $type;
145  }
146  }
147 
148  return $this->_types[$storeId];
149  }
150 
156  protected function _getDefaultFormat()
157  {
158  $store = $this->getStore();
159  $storeId = $store->getId();
160  if (!isset($this->_defaultTypes[$storeId])) {
161  $this->_defaultTypes[$storeId] = new DataObject();
162  $this->_defaultTypes[$storeId]->setCode(
163  'default'
164  )->setDefaultFormat(
165  '{{depend prefix}}{{var prefix}} {{/depend}}{{var firstname}} {{depend middlename}}' .
166  '{{var middlename}} {{/depend}}{{var lastname}}{{depend suffix}} {{var suffix}}{{/depend}}, ' .
167  '{{var street}}, {{var city}}, {{var region}} {{var postcode}}, {{var country}}'
168  );
169 
170  $renderer = $this->_addressHelper->getRenderer(self::DEFAULT_ADDRESS_RENDERER)
171  ->setType($this->_defaultTypes[$storeId]);
172  $this->_defaultTypes[$storeId]->setRenderer($renderer);
173  }
174  return $this->_defaultTypes[$storeId];
175  }
176 
183  public function getFormatByCode($typeCode)
184  {
185  foreach ($this->getFormats() as $type) {
186  if ($type->getCode() == $typeCode) {
187  return $type;
188  }
189  }
190  return $this->_getDefaultFormat();
191  }
192 }
__construct(\Magento\Customer\Model\Address\Config\Reader $reader, \Magento\Framework\Config\CacheInterface $cache, \Magento\Store\Model\StoreManagerInterface $storeManager, \Magento\Customer\Helper\Address $addressHelper, \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig, $cacheId='address_format', SerializerInterface $serializer=null)
Definition: Config.php:71
$storeManager
$type
Definition: item.phtml:13