magento 2 - Comment obtenir le nom de l'ensemble d'attributs dans la liste des produits et la page de détails du produit

10

Comment récupérer le nom de l'ensemble d'attributs d'un produit. Je veux l'utiliser sur la page des détails du produit et de la liste .

Abhishek Dhanraj Shahdeo
la source

Réponses:

15

Nous pouvons utiliser \Magento\Eav\Api\AttributeSetRepositoryInterfacepour obtenir le nom de l'ensemble d'attributs.

Page de détail

Nous devons remplacer le \Magento\Catalog\Block\Product\Viewbloc. Injectez cette classe sur le constructeur

/** @var \Magento\Eav\Api\AttributeSetRepositoryInterface $attributeSet **/
protected $attributeSet;

public function __construct(
    ......
    \Magento\Eav\Api\AttributeSetRepositoryInterface $attributeSet
    ......
) {
   ......
   $this->attributeSet = $attributeSet;
}


//Build method to get attribute set
public function getAttributeSetName() {

    $product = $this->getProduct();
    $attributeSetRepository = $this->attributeSet->get($product->getAttributeSetId());
    return $attributeSetRepository->getAttributeSetName();
}

Maintenant, nous pouvons appeler la page de détails du produit: $block->getAttributeSetName();

Page de cotation

Nous devons remplacer le \Magento\Catalog\Block\Product\ListProductbloc

/** @var \Magento\Eav\Api\AttributeSetRepositoryInterface $attributeSet **/
protected $attributeSet;

public function __construct(
    ......
    \Magento\Eav\Api\AttributeSetRepositoryInterface $attributeSet
    ......
) {
   ......
   $this->attributeSet = $attributeSet;
}

public function getAttributeSetName($product) {

    $attributeSetRepository = $this->attributeSet->get($product->getAttributeSetId());
    return $attributeSetRepository->getAttributeSetName();
}

On peut appeler $block->getAttributeSetName($_product).

Khoa TruongDinh
la source
$ attributeSet et $ product sont des variables non définies, je suis très nouveau sur magento2 et je ne suis pas en mesure de comprendre exactement ce que je dois écrire
Abhishek Dhanraj Shahdeo
Vous pouvez voir ma réponse mise à jour. Assez pour toi?
Khoa TruongDinh
J'essaie de l'implémenter dans le bloc de liste de produits, mais cela ne fonctionne pas aussi exactement, faisant quelques modifications
Abhishek Dhanraj Shahdeo
Je reçois un objet d'erreur dom doit être créé
Abhishek Dhanraj Shahdeo
Vous pouvez mettre à jour votre réponse avec le problème actuel en suivant ma réponse.
Khoa TruongDinh