magento 2에서 매장 전화 번호를 얻는 방법


17

magento 2의 프론트 엔드에서 magento admin에 저장된 전화 번호를 표시하고 싶습니다.

마 젠토 1.9 에서처럼

$storePhone = Mage::getStoreConfig('general/store_information/phone');

답변:


14

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();

phtml에서 객체 관리자를 사용하여 구현하는 방법
Paras Arora

@ parasarora1303 내 편집 내용을 볼 수 있지만 객체 관리자를 직접 사용해서는 안됩니다
Raphael at Digital Pianism

@RaphaelatDigitalPianism : 오류가 발생합니다. 치명적인 오류 : 잡히지 않는 오류 : 644 행의 vendor \ magento \ framework \ View \ Element \ AbstractBlock.php에서 null의 멤버 함수 dispatch ()를 호출합니다. ...
Kaushal Suthar

2
getStoreInformationObject 함수의 인수로 상점을 전달해야합니다.
Franck Garnier

1
이 답변은 여전히 ​​옳지 않습니다. $ store가 정의되지 않았습니다.
Cypher909

7
$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();

7

\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()


1

위의 방법은 효과가 없었으므로 다음과 같은 방법으로 시도해 보았습니다.

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();

1

위 코드는 작동하지 않습니다. 작동하는 다음 코드를 시도했습니다.

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();?>


0

우리는 또한 사용할 수 있습니다 :

$objectManager =  \Magento\Framework\App\ObjectManager::getInstance();        
$storePhone = $objectManager->get('Magento\Framework\App\Config\ScopeConfigInterface')->getValue('general/store_information/phone');
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.