This is my Block File:
<?php
namespace ChennaiBox\Mymail\Block\Mail;
class MailContent extends \Magento\Framework\View\Element\Template
{
protected $_objectManager;
protected $customerSession;
public function __construct(
\Magento\Customer\Model\Session $customerSession,
\Magento\Framework\ObjectManagerInterface $objectManager
) {
$this->customerSession = $customerSession;
$this->_objectManager = $objectManager;
}
public function mymailData()
{
try{
if ($this->customerSession->isLoggedIn()) {
$cutomerEmail =(string)$this->customerSession->getCustomer()->getEmail();
echo $cutomerEmail;
else{
$this->_redirect('customer/account/login/');
}
}catch (Exception $e) {
$e->getMessage();
}
}
}
If I call this block I get error
PHP Fatal error: Call to a member function dispatch() on null in /var/www/html/magento2/vendor/magento/framework/View/Element/AbstractBlock.php on line 642, referer: http://magentodev.gworks.mobi/magento2/customer/account/index/
from apache error.log file., why, suggect me how to solve this problem.
1 Answer 1
The problem is that your constructor does not match the parent class constructor.
To fix that you need to update your constructor:
public function __construct(
\Magento\Framework\View\Element\Template\Context $context,
\Magento\Customer\Model\Session $customerSession,
\Magento\Framework\ObjectManagerInterface $objectManager,
array $data = []
) {
parent::__construct($context, $data);
$this->customerSession = $customerSession;
$this->_objectManager = $objectManager;
}
Don't forget to flush the var/cache and var/generation after your changes.
-
2Thank you. This helped me with one of those 'I know I'm forgetting something but I can't remember what' situations.siliconrockstar– siliconrockstar2018年10月02日 16:43:56 +00:00Commented Oct 2, 2018 at 16:43