답변:
Magento/Store/Model/Information
클래스 를 사용하고 해당 getStoreInformationObject()
메소드를 호출해야 합니다.
그래도 템플릿에서 클래스를 사용하려면이 클래스를 사용자 정의 블록에 삽입해야합니다.
protected $_storeInfo;
public function __construct(
....
\Magento\Store\Model\Information $storeInfo,
....
) {
...
$this->_storeInfo = $storeInfo;
....
}
그런 다음 전화 번호를 검색하는 사용자 정의 방법을 작성하십시오.
public function getPhoneNumber()
{
return $this->_storeInfo->getStoreInformationObject(Store $store)->getPhone();
}
따라서 템플릿에서 다음을 호출 할 수 있습니다.
$block->getPhoneNumber();
객체 관리자를 직접 사용해서는 안됩니다 (여기 : Magento 2 : ObjectManager를 직접 사용하거나 사용하지 않겠습니까? 참조 ).
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$storeInformation = $objectManager->create('Magento/Store/Model/Information');
$storeInfo = $storeInformation->getStoreInformationObject($store);
그런 다음 전화를 걸어 전화를받을 수 있습니다.
$phone = $storeInfo->getPhone();
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$storeInformation = $objectManager->create('Magento\Store\Model\Information');
$store = $objectManager->create('Magento\Store\Model\Store');
$storeInfo = $storeInformation->getStoreInformationObject($store);
$phone = $storeInfo->getPhone();
\Magento\Framework\App\Config\ScopeConfigInterface
블록에 인스턴스를 주입해야합니다 .
$protected $scopeConfig;
public function __construct(
....
\Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig,
....
) {
...
$this->scopeConfig = $scopeConfig;
....
}
그런 다음 메소드를 작성하십시오. getStorePhone()
public function getStorePhone()
{
return $this->scopeConfig->getValue(
'general/store_information/phone',
\Magento\Store\Model\ScopeInterface::SCOPE_STORE
);
}
템플릿을 불러 echo $block->getStorePhone()
위의 방법은 효과가 없었으므로 다음과 같은 방법으로 시도해 보았습니다.
namespace Vendor\Module\Block;
class Contact extends \Magento\Framework\View\Element\Template
{
protected $_storeInfo;
protected $_storeManagerInterface;
public function __construct(
\Magento\Framework\View\Element\Template\Context $context,
\Magento\Store\Model\Information $storeInfo,
\Magento\Store\Model\StoreManagerInterface $storeManagerInterface,
array $data = []
)
{
parent::__construct($context, $data);
$this->_storeInfo = $storeInfo;
$this->_storeManagerInterface = $storeManagerInterface;
}
public function getPhoneNumber()
{
return $this->_storeInfo->getStoreInformationObject($this->_storeManagerInterface->getStore(null))->getPhone();
}
}
템플릿 파일에서
echo $block->getPhoneNumber();
위 코드는 작동하지 않습니다. 작동하는 다음 코드를 시도했습니다.
class Sociallinks extends \Magento\Framework\View\Element\Template
{
protected $socialLinksHelper;
protected $objMgr;
protected $storeInfo;
protected $scopeConfig;
public function __construct(
\Magento\Framework\View\Element\Template\Context $context,
\Addpeople\Websettings\Helper\Data $myModuleHelper,
array $data = []
) {
parent::__construct($context, $data);
$this->_socialLinksHelper = $myModuleHelper;
$this->_objMgr = \Magento\Framework\App\ObjectManager::getInstance();
$storeInformation = $this->_objMgr->create('Magento\Store\Model\Information');
$store = $this->_objMgr->create('Magento\Store\Model\Store');
$this->_storeInfo = $storeInformation->getStoreInformationObject($store);
}
public function getPhoneNumber()
{
return $this->_storeInfo->getPhone();
}
}
템플릿 파일
<?php echo $block->getPhoneNumber();?>