Im trying to add custom atribute ‘currency codes’ by creating ‘Vendor/Module/Setup/Patch/Data/PriceCrncyCodeAttribute.php’.
declare(strict_types=1);
namespace VendorModuleSetupPatchData;
use MagentoEavModelEntityAttributeScopedAttributeInterface;
use MagentoEavSetupEavSetup;
use MagentoEavSetupEavSetupFactory;
use MagentoFrameworkSetupModuleDataSetupInterface;
use MagentoFrameworkSetupPatchDataPatchInterface;
use MagentoFrameworkSetupPatchPatchRevertableInterface;
use MagentoStoreModelStoreManagerInterface;
use MagentoFrameworkAppState;
class PriceCrncyCodeAttribute implements DataPatchInterface, PatchRevertableInterface
{
/**
* @var ModuleDataSetupInterface
*/
private $moduleDataSetup;
/**
* @var EavSetupFactory
*/
private $eavSetupFactory;
private $storeManager;
private $appState;
/**
* Constructor
*
* @param ModuleDataSetupInterface $moduleDataSetup
* @param EavSetupFactory $eavSetupFactory
*/
public function __construct(
ModuleDataSetupInterface $moduleDataSetup,
EavSetupFactory $eavSetupFactory,
StoreManagerInterface $storeManager,
State $appState,
) {
$this->moduleDataSetup = $moduleDataSetup;
$this->eavSetupFactory = $eavSetupFactory;
$this->storeManager = $storeManager;
$this->appState = $appState;
}
/**
* {@inheritdoc}
*/
public function apply()
{
try {
$this->appState->setAreaCode('adminhtml');
} catch (LocalizedException $e) {
// Area code is already set, so no action needed
}
$this->moduleDataSetup->getConnection()->startSetup();
/** @var EavSetup $eavSetup */
$eavSetup = $this->eavSetupFactory->create(['setup' => $this->moduleDataSetup]);
$eavSetup->addAttribute(
MagentoCatalogModelProduct::ENTITY,
'price_crncy_code',
[
'type' => 'varchar',
'label' => 'Currency Code',
'input' => 'select',
'source' => '',
'frontend' => '',
'required' => false,
'backend' => '',
'sort_order' => '30',
'global' => ScopedAttributeInterface::SCOPE_GLOBAL,
'default' => null,
'visible' => true,
'user_defined' => true,
'searchable' => false,
'filterable' => false,
'comparable' => false,
'visible_on_front' => false,
'unique' => false,
'apply_to' => '',
'group' => 'General',
'used_in_product_listing' => false,
'is_used_in_grid' => true,
'is_visible_in_grid' => false,
'is_filterable_in_grid' => false,
'option' => array('values' => ['want to add all currencycodes here'])
]
);
$this->moduleDataSetup->getConnection()->endSetup();
}
public function revert()
{
$this->moduleDataSetup->getConnection()->startSetup();
/** @var EavSetup $eavSetup */
$eavSetup = $this->eavSetupFactory->create(['setup' => $this->moduleDataSetup]);
$eavSetup->removeAttribute(MagentoCatalogModelProduct::ENTITY, 'price_crncy_code');
$this->moduleDataSetup->getConnection()->endSetup();
}
/**
* {@inheritdoc}z
*/
public function getAliases()
{
return [];
}
/**
* {@inheritdoc}
*/
public static function getDependencies()
{
return [
];
}
}
i want to set all currency codes as options for this select tag