ข้อผิดพลาดร้ายแรงการโทรไปยังฟังก์ชั่นสมาชิก dispatch () ในขณะที่เรียกบล็อกของฉันใน magento 2


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: เรียกใช้ฟังก์ชั่นสมาชิก () ใน null ใน /var/www/html/magento2/vendor/magento/framework/View/Element/AbstractBlock.php ที่บรรทัด 642, ผู้อ้างอิง: http: //magentodev.gworks .mobi / magento2 / ลูกค้า / บัญชี / index /

จากerror.logไฟล์apache ทำไมแนะนำฉันถึงวิธีการแก้ปัญหานี้

คำตอบ:


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
ขอขอบคุณ. สิ่งนี้ช่วยฉันด้วย 'ฉันรู้ว่าฉันลืมอะไรบางอย่าง แต่ฉันจำสถานการณ์ไม่ได้ไม่ได้'
siliconrockstar
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.