Magento 2 – Fix Fatal Error: Uncaught Error: Call to a Member Function Dispatch

addressblocksemailmagento-2.1.2magento2

I'm trying to get store information which are set in backend like email,contact,address etc…(I've taken reference from here : https://magento.stackexchange.com/a/125359/39607 )

To do so I've created a module

Following is my block file…

Contact.php

<?php

namespace Vendor\Module\Block;

class Contact extends \Magento\Framework\View\Element\Template
{
    protected $_storeInfo;

    public function __construct(
        \Magento\Store\Model\Information $storeInfo
    )
    {        
        $this->_storeInfo = $storeInfo;
    }
    public function getPhoneNumber()
    {
        return $this->_storeInfo->getInformationObject()->getPhone();
    }

}

And in my phtml I'm calling like this :

<?php
    echo "Phone: ".$block->getPhoneNumber();
?>

But it's not working and showing me an error :

( ! ) Fatal error: Uncaught Error: Call to a member function
dispatch() on null in
vendor\magento\framework\View\Element\AbstractBlock.php on line 644 (
! ) Error: Call to a member function dispatch() on null in
vendor\magento\framework\View\Element\AbstractBlock.php on line 644

What can be the issue here??

Best Answer

It's because your constructor does not match the parent block constructor. (the ... in my answer you linked are important).

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