Whats the best way to check if a custom attribute exists in Magento2
-
14-04-2021 - |
سؤال
In being careful, I want to check if my custom attribute exists before I attempt to utilize it in any way. I need to check against all attributes collection, not just the product collection. My attribute may exist on a customer, a product, or on a custom model of my own creation.
In magento 1.x, I'd use the following:
$attr = Mage::getResourceModel('eav/entity_attribute_collection')->setCodeFilter('specialty')->getFirstItem();
if ($attr->getAttributeId() > 0) {
Do some stuff....'
I can't find anything that explicitly does something like this
المحلول
You need use \Magento\Eav\Api\AttributeRepositoryInterface::get
method for this.
For example:
try {
$attribute = $this->attributeRepository->get($entityType, $attributeCode);
} catch (\Magento\Framework\Exception\NoSuchEntityException $e) {
// attribute does not exist
}
نصائح أخرى
You may also use Magento\Catalog\Api\ProductAttributeRepositoryInterface
to determine the product attribute
try {
$this->attributeRepository->get('custom_attribute');
} catch (NoSuchEntityException $e) {
//To-do create attribute
}
This is verified on 2.3.2
لا تنتمي إلى magento.stackexchange