get product attribute in form magento 2
-
11-03-2021 - |
Решение
Please check this code to add select option field by ui-component
in your ui-component xml file add code like this.
<field formElement="select" name="status" sortOrder="40">
<argument name="data" xsi:type="array">
<item name="options" xsi:type="object">Vendor\ModuleName\Model\Config\Source\JobOptions</item>
<item name="config" xsi:type="array">
<item name="dataType" xsi:type="string">text</item>
<item name="label" xsi:type="string" translate="true">Job</item>
<item name="source" xsi:type="string">ModuleName</item>
<item name="dataScope" xsi:type="string">job</item>
<item name="validation" xsi:type="array">
<item name="required-entry" xsi:type="boolean">true</item>
</item>
</item>
</argument>
</field>
Then create file JobOptions.php in Vendor\ModuleName\Model\Config\Source , its defined in ui-component xml.
and add below code to get Product attributes in dropdown.
<?php
namespace Vendor\ModuleName\Model\Config\Source;
use Magento\Framework\Option\ArrayInterface;
class JobOptions implements ArrayInterface
{
/**
* @return array
*/
protected $_attributeFactory;
public function __construct(
\Magento\Catalog\Model\ResourceModel\Product\Attribute\CollectionFactory $attributeFactory
){
$this->_attributeFactory = $attributeFactory;
}
public function toOptionArray()
{
$attribute_data = [];
$attributeInfo = $this->_attributeFactory->create();
foreach ($attributeInfo as $items) {
$attribute_data[] = $items->getData();
}
$attributeOptions = [];
$i = 0;
foreach ($attribute_data as $attribute) {
$attributeOptions[$i]['label'] = $attribute['frontend_label'];
$attributeOptions[$i]['value'] = $attribute['attribute_id'];
$i++;
}
return $attributeOptions;
}
}
check this screenshot
Hope it will work for you.
Не связан с magento.stackexchange