Мені здається, що я намагаюся зрозуміти введення залежності 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
Якщо я додаю ті самі залежності до свого __construct, що і файл, який я з нього поширюю, працює, але, безумовно, це зворотний спосіб робити речі, оскільки точка спадкування класу полягає в тому, що я поглинаю всі методи та властивості батьків?
Я думаю, що мені просто потрібно базове 101 пояснення від когось щодо продовження занять та використання DI з Magento 2. Будь-яка допомога дуже вдячна!