Làm cách nào có thể xuất tên cửa hàng hiện tại trong mẫu tùy chỉnh Magento 2 với một khối tùy chỉnh?
Làm cách nào có thể xuất tên cửa hàng hiện tại trong mẫu tùy chỉnh Magento 2 với một khối tùy chỉnh?
Câu trả lời:
bạn cần sử dụng ví dụ \Magento\Framework\App\Config\ScopeConfigInterface
trong khối của mình:
Tạo phương thức getStoreName()
public function getStoreName()
{
return $this->_scopeConfig->getValue(
'general/store_information/name',
\Magento\Store\Model\ScopeInterface::SCOPE_STORE
);
}
và gọi trong mẫu của bạn echo $this->getStoreName()
\Magento\Store\Model\StoreManagerInterface $storeManager
trong constructor và public function getStoreName() { return $this->storeManager->getStore()->getName(); }
Thay vì getName()
bạn có thể sử dụng getCode()
, getId()
.
Sử dụng quản lý cửa hàng, nơi chứa thông tin về cửa hàng đang hoạt động. Nếu khối tùy chỉnh không được kế thừa từ Template
khối, hãy thêm phụ thuộc vào \Magento\Store\Model\StoreManagerInterface
cấu trúc.
<?php
namespace VendorName\ModuleName\Block;
class CustomBlock extends \Magento\Framework\View\Element\Template
{
/**
* Get current store name.
*
* @return string
*/
public function getCurrentStoreName()
{
return $this->_storeManager->getStore()->getName();
}
}
Sau đó trong mẫu:
<?php
/**
* @var $block \VendorName\ModuleName\Block\CustomBlock
*/
echo "<h1>Current store name is '{$block->getCurrentStoreName()}'</h1>";
?>
Để có được giá trị cấu hình cửa hàng như general/store_information/name
bạn có thể sử dụng như sau
$config = new \Magento\Framework\App\Config\ScopeConfigInterface();
echo $config->getValue('general/store_information/name');
Tuy nhiên, làm điều này từ một khối hoặc người trợ giúp sẽ sạch hơn. Dưới đây là một lớp trợ giúp sẽ tồn tại trong mô-đun tùy chỉnh của riêng bạn
namespace [Namespace]\[Module]\Helper;
class Data extends \Magento\Framework\App\Helper\AbstractHelper
{
/**
* Retrieve store name
*
* @return string|null
*/
public function getStoreName()
{
return $this->scopeConfig->getValue(
'general/store_information/name',
\Magento\Store\Model\ScopeInterface::SCOPE_STORE
);
}
}
Mà bạn sẽ tiêm như là phụ thuộc trong lớp khối của bạn