In this post you will learn about how to add colour picker option in the product add/edit admin form Magento2.
Let's start by creating a custom module.
Find the Complete module on Github at Magelearn_ProductColorPicker
app/code/Magelearn/ProductColorPicker<?php /** * Copyright © All rights reserved. * See COPYING.txt for license details. */ use Magento\Framework\Component\ComponentRegistrar; ComponentRegistrar::register(ComponentRegistrar::MODULE, 'Magelearn_ProductColorPicker', __DIR__);Add composer.json file in it:
{
"name": "magelearn/module-ProductColorPicker",
"description": "Magento2 add colorpicker in product add/edit admin form",
"type": "magento2-module",
"license": "OSL-3.0",
"authors": [
{
"email": "vijaymrami@gmail.com",
"name": "vijay rami"
}
],
"minimum-stability": "dev",
"require": {},
"autoload": {
"files": [
"registration.php"
],
"psr-4": {
"Magelearn\\ProductColorPicker\\": ""
}
}
}<?xml version="1.0" ?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
<module name="Magelearn_ProductColorPicker" setup_version="1.0.0">
</module>
</config>Create InstallData script to add product colour picker attribute
<?php
namespace Magelearn\ProductColorPicker\Setup;
use Magento\Framework\Setup\ModuleContextInterface;
use Magento\Framework\Setup\ModuleDataSetupInterface;
use Magento\Framework\Setup\InstallDataInterface;
use Magento\Eav\Setup\EavSetupFactory;
/**
* Class InstallData
* @package Magelearn\Productattachement\Setup
*
* @codeCoverageIgnore
*/
class InstallData implements InstallDataInterface
{
/**
* @var EavSetupFactory
*/
protected $_eavSetupFactory;
public function __construct(
EavSetupFactory $eavSetupFactory
) {
$this->_eavSetupFactory = $eavSetupFactory;
}
/**
* {@inheritdoc}
* @SuppressWarnings(PHPMD.CyclomaticComplexity)
* @SuppressWarnings(PHPMD.ExcessiveMethodLength)
* @SuppressWarnings(PHPMD.NPathComplexity)
*/
public function install(ModuleDataSetupInterface $setup, ModuleContextInterface $context)
{
$eavSetup = $this->_eavSetupFactory->create(["setup"=>$setup]);
$eavSetup->addAttribute(
\Magento\Catalog\Model\Product::ENTITY,
'product_label_font_color',
[
'group' => 'Content',
'type' => 'text',
'label' => 'Product Label Font Color',
'input' => 'text',
'frontend' => '',
'class' => '',
'source' => '',
'global' => \Magento\Eav\Model\Entity\Attribute\ScopedAttributeInterface::SCOPE_GLOBAL,
'visible' => true,
'required' => false,
'user_defined' => true,
'default' => '',
'searchable' => false,
'filterable' => false,
'comparable' => false,
'visible_on_front' => true,
'unique' => false,
'apply_to' => 'simple,configurable', // applicable for simple and configurable product
'used_in_product_listing' => true
]
);
}
}Now to display this colour picker attribute in Product edit form,
Create file at Magelearn/ProductColorPicker/view/adminhtml/ui_component/product_form.xml
<?xml version="1.0" encoding="UTF-8"?>
<form xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Ui:etc/ui_configuration.xsd">
<fieldset name="content">
<field name="product_label_font_color" sortOrder="670" formElement="colorPicker">
<settings>
<label translate="true">Product Label Font Color</label>
<componentType>colorPicker</componentType>
<dataScope>product_label_font_color</dataScope>
<dataType>text</dataType>
</settings>
<formElements>
<colorPicker>
<settings>
<colorPickerMode>full</colorPickerMode>
<colorFormat>hex</colorFormat>
</settings>
</colorPicker>
</formElements>
</field>
</fieldset>
</form>To Display this colour picker attribute properly on Product edit form we will modify product data provider form.
Add file at Magelearn/ProductColorPicker/etc/adminhtml/di.xml
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<virtualType name="Magento\Catalog\Ui\DataProvider\Product\Form\Modifier\Pool">
<arguments>
<argument name="modifiers" xsi:type="array">
<item name="add_color_picker" xsi:type="array">
<item name="class" xsi:type="string">Magelearn\ProductColorPicker\Ui\DataProvider\Product\Form\Modifier\ColorPicker</item>
<item name="sortOrder" xsi:type="number">200</item>
</item>
</argument>
</arguments>
</virtualType>
</config>Add the Data Provider class at Magelearn/ProductColorPicker/Ui/DataProvider/Product/Form/Modifier/ColorPicker.php
<?php
declare(strict_types = 1);
namespace Magelearn\ProductColorPicker\Ui\DataProvider\Product\Form\Modifier;
use Magento\Catalog\Ui\DataProvider\Product\Form\Modifier\AbstractModifier;
class ColorPicker extends AbstractModifier
{
/**
* @param array $data
*
* @return array
*/
public function modifyData(array $data): array
{
return $data;
}
/**
* @param array $meta
*
* @return array
*/
public function modifyMeta(array $meta): array
{
$codes = [
'product_label_font_color'
];
foreach ($codes as $code) {
if (!isset($meta['content']['children']['container_' . $code])) {
continue;
}
$meta['content']['children']['container_' . $code]['children'] = array_replace_recursive(
$meta['content']['children']['container_' . $code]['children'],
[
$code => [
'arguments' => [
'data' => [
'config' => [
'visible' => 0,
],
]
]
]
]
);
}
return $meta;
}
}Now colour picker attribute is now ready to use in your product Add/edit form.
Hope this article will help you to make any customization in your custom module.

0 Comments On "Add colour picker option in product add/edit admin form Magento2"