ฉันดูเหมือนจะดิ้นรนที่จะเข้าใจการฉีดขึ้นกับบล็อกของ Magento 2 ทุกครั้งที่ฉันพยายามขยายบล็อกที่ไม่ใช่\ Magento \ Framework \ View \ Element \ Templateฉันท้ายด้วยข้อผิดพลาด
ฉันต้องการสร้างบล็อกที่ขยายคลาสบล็อกพื้นฐานของMagento \ Theme \ Block \ Html \ Header \ Logo - ทุกอย่างทำงานได้ดีจนกระทั่งฉันลองใช้การฉีดพึ่งพาภายในวิธีการสร้าง:
<?php
namespace Creare\Test\Block\Header;
class Logo extends \Magento\Theme\Block\Html\Header\Logo
{
protected $_creareHelper;
public function __construct(
\Magento\Framework\View\Element\Template\Context $context,
\Creare\Seo\Helper\Data $creareHelper,
array $data = []
)
{
$this->_creareHelper = $creareHelper;
parent::__construct($context, $data);
}
}
ทันทีที่ฉันพยายามฉีดผู้ช่วย (หรืออย่างอื่นสำหรับเรื่องนั้นฉันจะได้รับการติดตามสแต็กเริ่มต้นด้วยข้อผิดพลาดต่อไปนี้:
Recoverable Error: Argument 2 passed to Magento\Theme\Block\Html\Header\Logo::__construct() must be an instance of Magento\MediaStorage\Helper\File\Storage\Database, array given, called in /Users/adammoss/PhpstormProjects/Magento2/app/code/Creare/Test/Block/Header/Logo.php on line 17 and defined in /Users/adammoss/PhpstormProjects/Magento2/app/code/Magento/Theme/Block/Html/Header/Logo.php on line 33
ถ้าฉันเพิ่มการพึ่งพาแบบเดียวกันกับ __ โครงสร้างของฉันเป็นไฟล์ที่ฉันขยายจากมันใช้งานได้ แต่แน่นอนว่ามันเป็นวิธีย้อนหลังในการทำสิ่งต่าง ๆ ที่เป็นจุดสืบทอดของคลาสคือฉันดูดซับวิธีการและคุณสมบัติทั้งหมดของผู้ปกครองหรือไม่
ฉันคิดว่าฉันแค่ต้องการคำอธิบายพื้นฐาน 101 จากใครบางคนเกี่ยวกับการขยายจากชั้นเรียนและใช้ DI กับ Magento 2 ความช่วยเหลือใด ๆ ชื่นชมมาก!