Magento 2 bağımlılık enjeksiyonunu bloklarla kavramaya çalışıyorum, her seferinde \ Magento \ Framework \ View \ Element \ Template olmayan bir bloğu genişletmeye çalışıyorum .
Magento \ Theme \ Block \ Html \ Header \ Logo'nun çok temel blok sınıfını genişleten bir blok oluşturmak istiyorum - construct yöntemi içinde bağımlılık enjeksiyonunu deneyene kadar her şey iyi çalışıyor:
<?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);
}
}
Yardımcı sınıfımı (veya bu konu için başka bir şey) enjekte etmeye çalıştığımda, aşağıdaki hatayla başlayan bir yığın izlemesi alıyorum:
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
Eğer onunla genişlettiğim dosya olarak benim __construct ile aynı bağımlılıkları eklerseniz, ama bu sınıf mirasının noktası olarak bir şeyler yapmanın geriye dönük bir yolu tüm ebeveynin yöntem ve özelliklerini absorbe mi?
Ben sadece sınıflardan uzanan ve Magento 2 ile DI kullanarak birinden temel 101 açıklamasına ihtiyacım olduğunu düşünüyorum. Herhangi bir yardım çok takdir!