2016-07-26 14 views
1

Ich versuche, um einen Block zu verwenden, um die Speicher Telefonnummer anzuzeigen und diesen Fehler:Magento 2 - Anzeige Telefonnummer Blockfehler

Recoverable Error: Argument 1 passed to Magento\Store\Model\Information::getStoreInformationObject() must be an instance of Magento\Store\Model\Store, none given

Hier ist mein Code:

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

Antwort

1

hollaholla bruva

hatte ich das gleiche Problem und die Lösung Here

Von dem, was ich gefunden Wenn t so aussieht, müssen Sie ein Speicherobjekt als Argument für die Funktion getStoreInformationObject festlegen. Sie können dies tun, indem Sie das Modell in Ihren Konstruktor einspeisen.

erstellen Nächstes eine Variable für dieses

$this->_storeManagerInterface = $storeManagerInterface; 

und übergeben Sie die getStore() Funktion als Argument für Ihre getStoreInformationObject() Funktion.

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

Ihr endgültiger Code soll wie folgt aussehen:

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 : '' ; 
     } 
    } 

ich auch einige Validierung des Mehrwert, um sicherzustellen, nicht leer ist, da dies einen Fehler werfen.

Ich hoffe, ich habe dabei geholfen, Viel Glück