如何在magento 2中获取商店电话号码


17

我想在magento 2的前端中显示保存在magento admin中的电话号码。

如在magento 1.9中一样

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

Answers:


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看到我的编辑,但您永远不要直接使用对象管理器
Raphael在Digital Pianism上2016年

@RaphaelatDigitalPianism:我收到一个错误致命错误:未捕获的错误:在第644行上的vendor \ magento \ framework \ View \ Element \ AbstractBlock.php中的null上调用成员函数dispatch()-在清除缓存和所有内容之后。 ...
Kaushal Suthar '16

2
你需要通过实体店作为函数getStoreInformationObject的参数
弗兰克卡尼尔

1
这个答案还是不对的。$ store未定义。
Cypher909 '18

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');
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.