Como verificar se um atributo existe no Magento 2
Desenvolvimento, Magento 2
Atualizado em 01 de março de 2022
Em algum momento você precisará verificar se determinado atributo existe antes de fazer determinada ação.
No meu caso, tive este problema ao criar um novo tipo de cache que dependia de um atributo que seria criado no setup do mesmo módulo. O problema é que ao executar bin/magento setup:upgrade
o Magento limpa o cache antes de executar os scripts de setup dos módulos. Desta forma, o atributo ainda não existia e ocasionava erro.
É claro, esta é apenas uma das várias ocasiões que isso pode ser necessário.
Bom, como podemos ver se um atributo existe?
Os atributos EAV (como clientes, produtos, endereços, etc) são gravados na tabela eav_attribute
. Sendo assim, basta fazer adicionar um código com um SELECT * FROM… Brincadeira. Vamos fazer do jeito certo né?
<?php namespace Magenteiro\Exemplo\Simples; class Magenteiro { /** * @var \Magento\Eav\Model\Config */ private $eavConfig; public function __construct(\Magento\Eav\Model\Config $eavConfig) { $this->eavConfig = $eavConfig; } /** * Verifica existência de atributo de Produto * @param $attributeCode * * @return bool * @throws \Magento\Framework\Exception\LocalizedException */ public function isProductAttributeAvailable($attributeCode) { $attribute = $this->eavConfig->getAttribute(\Magento\Catalog\Model\Product::ENTITY, $attributeCode); return ($attribute && $attribute->getId()); } /** * Verifica existência de atributo de Cliente * @param $attributeCode * * @return bool * @throws \Magento\Framework\Exception\LocalizedException */ public function isCustomerAttributeAvailable($attributeCode) { $attribute = $this->eavConfig->getAttribute(\Magento\Customer\Model\Customer::ENTITY, $attributeCode); return ($attribute && $attribute->getId()); } }
Como podemos ver, basta injetar a classe \Magento\Eav\Model\Config
e chamar o método getAttribute
para obter o atributo. Caso o retorno seja falso ou não tenha um ID, o atributo não está disponível.
Essa foi fácil, não é mesmo?
Aprenda mais no nosso curso de desenvolvimento para Magento 2.
Inspirado no artigo original de Scommerce (em Inglês).
- PagSeguro (PagBank) para Magento 1 recebe a Nova Geração - 9 de abril de 2024
- Recorrência no WooCommerce Sem Plugins Pagos - 28 de janeiro de 2024
- Chargeback. O que é, e como se livrar deles. - 19 de dezembro de 2023
Deixe seu comentário
[fbcomments url="https://www.magenteiro.com/blog/magento-2/verificar-existencia-atributo/"]