Magento 2でストアの電話番号を取得する方法


17

magento管理画面に保存された電話番号をmagento 2のフロントエンドに表示したい。

magento 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のオブジェクトマネージャーを使用してそれを実装する方法
パラスアローラ

@ parasarora1303私の編集を参照してくださいが、オブジェクトマネージャーを直接使用しないでください
デジタルピアニズムのラファエル

@RaphaelatDigitalPianism:エラーが発生しています致命的なエラー:キャッチされていないエラー:644行目のvendor \ magento \ framework \ View \ Element \ AbstractBlock.phpでnullのメンバー関数dispatch()を呼び出します-キャッシュとすべてをクリアした後。 ...
Kaushal Suthar

2
ストアを関数getStoreInformationObjectの引数として渡す必要があります
フランクガルニエ

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.