Je semble avoir du mal à saisir l'injection de dépendance Magento 2 avec des blocs, chaque fois que j'essaie d'étendre un bloc qui n'est pas \ Magento \ Framework \ View \ Element \ Template, je me retrouve avec des erreurs.
Je veux créer un bloc qui étend la classe de blocs très basique de Magento \ Theme \ Block \ Html \ Header \ Logo - tout fonctionne bien jusqu'à ce que j'essaie l'injection de dépendance dans la méthode de construction:
<?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);
}
}
Dès que j'essaie d'injecter ma classe d'assistance (ou toute autre chose d'ailleurs, j'obtiens une trace de pile commençant par l'erreur suivante:
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
Si j'ajoute les mêmes dépendances à ma __construct que le fichier que j'étends, cela fonctionne, mais c'est sûrement une façon à l'envers de faire les choses car le point d'héritage de classe est que j'absorbe toutes les méthodes et propriétés du parent?
Je pense que j'ai juste besoin d'une explication de base 101 de quelqu'un sur l'extension des cours et l'utilisation de DI avec Magento 2. Toute aide très appréciée!