Magento 2:如何在状态可见=>是的自定义模块块文件中获取产品属性集合?
Magento 2 : How to get product attributes collection in custom module block file whose status is visible =>yes?
这是我调用产品属性集合的函数我已经获得了已启用产品的产品属性,但我在根据它们自己的可见性过滤它们时遇到问题,即我只想要那些状态为的产品属性集合设置对管理员可见....
class ProductList extends \Magento\Framework\View\Element\Template
{
protected $_attributeFactory;
public function __construct(
\Magento\Catalog\Model\ResourceModel\Eav\Attribute $attributeFactory
){
parent::__construct($context);
$this->_attributeFactory = $attributeFactory;
}
public function getallattributes()
{
$arr = [];
$attributeInfo = $this->_attributeFactory->getCollection()->addFieldToFilter(\Magento\Eav\Model\Entity\Attribute\Set::KEY_ENTITY_TYPE_ID, 4);
foreach($attributeInfo as $attributes)
{
$attributeId = $attributes->getAttributeId();
// You can get all fields of attribute here
$arr[$attributes->getAttributeId()] = $attributes->getFrontendLabel();
}
return $arr;
} }
没有测试,但它会为你工作
$attributeInfo = $this->_attributeFactory->getCollection()
->addFieldToFilter(\Magento\Eav\Model\Entity\Attribute\Set::KEY_ENTITY_TYPE_ID, 4)
->addFieldToFilter('is_visible_on_front',1);
要获取所有产品属性,您需要使用注入 class
app/code/Mendor/Mymodule/Model/Attributes.php
public function __construct(Context $context,
\Magento\Eav\Model\ResourceModel\Entity\Attribute\Collection $coll
){
$this->_coll=$coll;
parent::__construct($context);
}
public function getAllAttributes()
{
$this->_coll->addFieldToFilter(\Magento\Eav\Model\Entity\Attribute\Set::KEY_ENTITY_TYPE_ID, 4);
$attrAll = $this->_coll->load()->getItems();
echo '<pre>'; var_dump($attrAll);'</pre>';
exit;
}
您可以使用以下函数来完成:
public function getallattributes()
{
$arr = [];
$attributeInfo = $this->_attributeFactory->getCollection()-
>addFieldToFilter(\Magento\Eav\Model\Entity\Attribute\Set::
KEY_ENTITY_TYPE_I D, 4);
foreach($attributeInfo as $attributes)
{
$attributeId = $attributes->getAttributeId();
// You can get all fields of attribute here
if($attributes->getIsVisibleOnFront()){
$arr[$attributes->getAttributeId()] = $attributes
>getFrontendLabel();
}
}
return $arr;
}
这是我调用产品属性集合的函数我已经获得了已启用产品的产品属性,但我在根据它们自己的可见性过滤它们时遇到问题,即我只想要那些状态为的产品属性集合设置对管理员可见....
class ProductList extends \Magento\Framework\View\Element\Template
{
protected $_attributeFactory;
public function __construct(
\Magento\Catalog\Model\ResourceModel\Eav\Attribute $attributeFactory
){
parent::__construct($context);
$this->_attributeFactory = $attributeFactory;
}
public function getallattributes()
{
$arr = [];
$attributeInfo = $this->_attributeFactory->getCollection()->addFieldToFilter(\Magento\Eav\Model\Entity\Attribute\Set::KEY_ENTITY_TYPE_ID, 4);
foreach($attributeInfo as $attributes)
{
$attributeId = $attributes->getAttributeId();
// You can get all fields of attribute here
$arr[$attributes->getAttributeId()] = $attributes->getFrontendLabel();
}
return $arr;
} }
没有测试,但它会为你工作
$attributeInfo = $this->_attributeFactory->getCollection()
->addFieldToFilter(\Magento\Eav\Model\Entity\Attribute\Set::KEY_ENTITY_TYPE_ID, 4)
->addFieldToFilter('is_visible_on_front',1);
要获取所有产品属性,您需要使用注入 class
app/code/Mendor/Mymodule/Model/Attributes.php
public function __construct(Context $context,
\Magento\Eav\Model\ResourceModel\Entity\Attribute\Collection $coll
){
$this->_coll=$coll;
parent::__construct($context);
}
public function getAllAttributes()
{
$this->_coll->addFieldToFilter(\Magento\Eav\Model\Entity\Attribute\Set::KEY_ENTITY_TYPE_ID, 4);
$attrAll = $this->_coll->load()->getItems();
echo '<pre>'; var_dump($attrAll);'</pre>';
exit;
}
您可以使用以下函数来完成:
public function getallattributes()
{
$arr = [];
$attributeInfo = $this->_attributeFactory->getCollection()-
>addFieldToFilter(\Magento\Eav\Model\Entity\Attribute\Set::
KEY_ENTITY_TYPE_I D, 4);
foreach($attributeInfo as $attributes)
{
$attributeId = $attributes->getAttributeId();
// You can get all fields of attribute here
if($attributes->getIsVisibleOnFront()){
$arr[$attributes->getAttributeId()] = $attributes
>getFrontendLabel();
}
}
return $arr;
}