magento 2でブロックを呼び出すときに、メンバー関数dispatch()を呼び出す致命的なエラー


19

これは私のブロックファイルです:

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

    }
   }

 }

このブロックを呼び出すと、エラーが発生します

PHP致命的エラー:642行目の/var/www/html/magento2/vendor/magento/framework/View/Element/AbstractBlock.phpのnullでメンバー関数dispatch()を呼び出し、参照元: http://magentodev.gworks .mobi / magento2 / customer / account / index /

Apache error.logファイルから、なぜ、この問題を解決する方法を提案してください。

回答:


38

問題は、コンストラクターが親クラスのコンストラクターと一致しないことです。

これを修正するには、コンストラクタを更新する必要があります。

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

フラッシュを忘れないようにvar/cacheしてvar/generation、変更後。


1
ありがとうございました。これは、「何かを忘れているのは知っているが、何を思い出せないのか」という状況の1つを助けてくれました。
Siliconrockstar
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.