Mi sembra che stia faticando a cogliere l'iniezione di dipendenza Magento 2 con i blocchi, ogni volta che provo ad estendere un blocco che non è \ Magento \ Framework \ View \ Element \ Template finisco con errori.
Voglio creare un blocco che estende la classe di blocco di base di Magento \ Theme \ Block \ Html \ Header \ Logo - tutto funziona bene fino a quando non provo l'iniezione di dipendenza nel metodo di costruzione:
<?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);
}
}
Non appena provo a iniettare la mia classe helper (o qualsiasi altra cosa, ottengo una traccia dello stack che inizia con il seguente errore:
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
Se aggiungo le stesse dipendenze al mio __costruct come funziona il file che sto estendendo da esso, ma sicuramente è un modo all'indietro di fare le cose come il punto di eredità della classe è che assorbo tutti i metodi e le proprietà del genitore?
Penso di aver bisogno di una spiegazione di base 101 da parte di qualcuno sull'estensione delle lezioni e sull'utilizzo di DI con Magento 2. Qualsiasi aiuto molto apprezzato!