Как получить настраиваемую метку и значение атрибута в magento 2?
Использование диспетчера объектов не является правильным способом, но этот код предназначен только для тестирования.
Я хочу получить значение атрибута, которое доступно в настраиваемых продуктах. Я пробовал использовать приведенный ниже код, но я получаю значение всех атрибутов, которое назначено в раскрывающемся списке атрибуты.
Пожалуйста, смотрите ниже код
<?php
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$repository = $objectManager->create('Magento\Catalog\Model\ProductRepository');
$product = $repository->getById($p_coll->getId());
$data = $product->getTypeInstance()->getConfigurableOptions($product);
$options = array();
foreach ($data as $attr) {
foreach ($attr as $p) {
$options[] = $p['attribute_code'];
}
}
$statu = 0;
$eavConfig = $objectManager->get('\Magento\Eav\Model\Config');
foreach (array_unique($options) as $code) {
$attribute = $eavConfig->getAttribute('catalog_product', $code);
$options = $attribute->getSource()->getAllOptions();
$optionsExists = array();
if ($options) {
echo $code;
echo "<select>";
foreach ($options as $option) {
//$optionsExists[] = $option['label'];
if ($option['label']) {
echo "<option value='" . $option['label'] . "'>" . $option['label'] . "</option>";
}
}
echo "</select>";
}
}
?>
Пожалуйста, смотрите ниже снимок экрана
Доступно только 2 цвета для этого настраиваемого продукта, но все цветовые варианты показаны в моей коллекции. Пожалуйста, смотрите скриншот ниже.
2 answers
Пожалуйста, попробуйте использовать приведенный ниже код и, пожалуйста, введите идентификатор продукта, чтобы получить значение
<?php
use Magento\Framework\App\Bootstrap;
require __DIR__ . '/app/bootstrap.php';
// adding bootstrap
$bootstraps = Bootstrap::create(BP, $_SERVER);
$object_Manager = $bootstraps->getObjectManager();
$app_state = $object_Manager->get('\Magento\Framework\App\State');
$app_state->setAreaCode('frontend');
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$product = $objectManager->create('Magento\Catalog\Model\Product')->load(**product id**);
$productTypeInstance = $objectManager->get('Magento\ConfigurableProduct\Model\Product\Type\Configurable');
$productAttributeOptions = $productTypeInstance->getConfigurableAttributesAsArray($product);
foreach ($productAttributeOptions as $key => $value) {
$tmp_option = $value['values'];
if(count($tmp_option) > 0)
{
echo "<h3>".$value['label']."</h3>";
echo "<select id='".$key."_".$value['label']."'>";
foreach ($tmp_option as $tmp)
{
echo "<option value='".$key."_".$tmp['value_index']."'>".$tmp['label']."</option>";
}
echo "</select>";
}
}
public function execute()
{
$collection = $this->_collectionFactory->create()
->addFieldToFilter(
'frontend_input',
'select'
)->addFieldToFilter(
'is_user_defined',
1
)->addFieldToFilter(
'is_global',
1
);
foreach($collection as $attributes)
{
$attributeId = $attributes->getAttributeId();
echo $attributeId."<br/>";
$attribute =$this->eavConfig->getAttribute('catalog_product', $attributeId );//"color" is the attribute_code
$allOptions = $attribute->getSource()->getAllOptions(true, true);
foreach ( $allOptions as $instance ) {
$id = $instance['value']; //id of the option
echo $id ;
$value = $instance['label']; //Label of the option
echo $value;
}
}
return $this->_pageFactory->create();
}
Это даст все настраиваемые атрибуты продукта.разместите этот код там, где вы хотите!!!!! Это даст вам идентификатор атрибута и все его значение