Magento 2 référentiel de produit
-
29-09-2020 - |
Question
Dans Magento2, j'ai compris que nous devons utiliser des référentiels au lieu de collections.Ce que je ne comprends pas c'est comment faire pour ajouter des attributs personnalisés dans le référentiel.
Si je fais quelque chose comme ceci:
$searchCriteria = $this->searchCriteriaBuilder
->addFilter(ProductInterface::STATUS, Status::STATUS_ENABLED)
->addFilter(ProductInterface::VISIBILITY, array(Visibility::VISIBILITY_IN_SEARCH, Visibility::VISIBILITY_BOTH), 'in')
->create();
$products = $this->productRepositoryInterface->getList($searchCriteria);
J'ai une liste de produits, mais je n'ai pas tous les attributs dont j'ai besoin.Comment peuvent-ils y parvenir?Quelque chose comme le addAttributeToSelect
dans Magento 1.
La solution
J'ai compris que nous devons utiliser des référentiels au lieu de collections
pas nécessairement;
Autant que je sache, lorsque vous utilisez les référentiels de vous conformer aux règles de Magento 2 contrats de service, ce qui signifie que les interfaces de service et interfaces de données sont définis (mais extensible par modules tiers).
Rendant possible au moment de l'exécution de changer le résultat de l'appel à la getList()
la méthode de dépôt constituent une violation du présent contrat.
Pour récupérer les attributs que vous avez besoin au moment de l'exécution, vous pouvez utiliser des collections.Magento 2-cadre lui-même qui fait un usage intensif des collections.
Sinon, vous devez implémenter un module qui définit une nouvelle interface de données (qui est, le nouvel ensemble d'attributs) de cette entité.
Espérons qu'il jette un peu de lumière.