Magento 2 - 显示电话号码阻止错误

时间:2016-07-26 21:04:35

标签: magento magento2

我正在尝试使用块来显示商店电话号码并收到此错误:

  

可恢复错误:传递给Magento \ Store \ Model \ Info :: getStoreInformationObject()的参数1必须是Magento \ Store \ Model \ Store的实例,没有给出

这是我的代码:

<?php

namespace MyVendor\Custom\Block;

use Magento\Framework\View\Element\Template;

class Phone extends Template
{
    protected $_storeInfo;

    public function __construct(
        \Magento\Framework\View\Element\Template\Context $context,
        \Magento\Store\Model\Information $storeInfo,
        array $data = []
    ) {
        parent::__construct($context, $data);
        $this->_storeInfo = $storeInfo;
    }

    public function getPhoneNumber()
    {
        return $this->_storeInfo->getStoreInformationObject()->getPhone();
    }
}

1 个答案:

答案 0 :(得分:1)

hollaholla bruva

我遇到了同样的问题并找到了解决方案Here

从它看起来,你必须设置一个商店对象作为getStoreInformationObject函数的参数。你可以通过注入

来做到这一点
\Magento\Store\Model\StoreManagerInterface

进入构造函数的模型。

接下来为此

创建一个变量
$this->_storeManagerInterface = $storeManagerInterface;

并将getStore()函数作为参数传递给getStoreInformationObject()函数。

$this->_storeInfo->getStoreInformationObject($this->_storeManagerInterface->getStore())->getPhone();

您的最终代码应如下所示:

    class Helloworld 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()
         {
              $telephone = $this->_storeInfo->getStoreInformationObject($this->_storeManagerInterface->getStore())->getPhone();
              return (!empty($telephone)) ? $telephone : '' ;
         }
    }

我还添加了一些验证以确保该值不为空,因为这会引发错误。

希望我对此有所帮助, 祝你好运