Schwerwiegender Fehler Rufen Sie eine Mitgliedsfunktion dispatch () auf, während Sie meinen Block in magento 2 aufrufen


19

Dies ist meine Blockdatei:

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

    }
   }

 }

Wenn ich diesen Block aufrufe, erhalte ich eine Fehlermeldung

Schwerwiegender PHP-Fehler: Rufen Sie in /var/www/html/magento2/vendor/magento/framework/View/Element/AbstractBlock.php in Zeile 642 eine Member-Funktion dispatch () auf, referer: http: //magentodev.gworks .mobi / magento2 / customer / account / index /

aus der Apache- error.logDatei., warum, empfehle mir, wie man dieses Problem löst.

Antworten:


38

Das Problem ist, dass Ihr Konstruktor nicht mit dem übergeordneten Klassenkonstruktor übereinstimmt.

So beheben Sie, dass Sie Ihren Konstruktor aktualisieren müssen:

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

Vergessen Sie nicht, das var/cacheund var/generationnach Ihren Änderungen zu spülen .


1
Vielen Dank. Dies half mir bei einer der Situationen, bei denen ich weiß, dass ich etwas vergesse, aber ich kann mich nicht erinnern, an welche Situationen.
Siliconrockstar
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.