我正在尝试使用块来显示商店电话号码并收到此错误:
可恢复错误:传递给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();
}
}
答案 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 : '' ;
}
}
我还添加了一些验证以确保该值不为空,因为这会引发错误。
希望我对此有所帮助, 祝你好运