Utilisation de la DI

L'injection de dépendance permet de dire qu'une classe dépend d'une autre. Nous allons utiliser la DI pour charger un produit en dur dans notre block.

Nous allons charger le repository des produits, en prenant toujours l'interface.

Nous aurons donc :

/**
 * @var ProductRepositoryInterface
 */
private $productRepository;

public function __construct(
    ProductRepositoryInterface $productRepository
    Context $context,
    array $data = []
) {
    $this->productRepository = $productRepository;

    parent::__construct($context, $data);
}

Cela nous permettra de l'utiliser en faisant $this->productRepository. Pour charger un produit nous utiliserons :

$product = $this->productRepository->getById($productId);

Compilation de la DI

Chaque modification liée à la DI - généralement la modification d'un construct - nécessite de compiler la DI via la commande

php bin/magento setup:di:compile

Le mode developer permet néanmoins d'éviter cela, Magento devrait recompiler "à la volée".

TP - Affichage du nom, du prix et de l'image d'un produit sur la page d'accueil