I added a custom field inside my product attributes and it's render and save OK, but when I reload the attribute form, the value of my custom field is empty. If I enter to the form data inside the _prepareForm in Front.php, I see my custom field value that is 5 right now
I create my plugin with this code:
/app/code/Vendor/CustomModule/etc/adminhtml/di.xml
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<type name="Magento\Catalog\Block\Adminhtml\Product\Attribute\Edit\Tab\Front">
<plugin name="vendor_custommodule_attribute_edit_form" type="Vendor\CustomModule\Plugin\Block\Adminhtml\Product\Attribute\Edit\Tab\Front" sortOrder="1"/>
</type>
</config>
/app/code/Vendor/CustomModule/Plugin/Block/Adminhtml/Product/Attribute/Edit/Tab/Front.php
namespace Vendor\CustomModule\Plugin\Block\Adminhtml\Product\Attribute\Edit\Tab;
class Front
{
/**
* Get form HTML
*
* @return string
*/
public function aroundGetFormHtml(
\Magento\Catalog\Block\Adminhtml\Product\Attribute\Edit\Tab\Front $subject,
\Closure $proceed
)
{
$form = $subject->getForm();
if (is_object($form)) {
$fieldset = $form->addFieldset(
'custom_fieldset',
['legend' => __('Custom options')]
);
$fieldset->addField(
'my_custom_field',
'text',
[
'name' => 'my_custom_field',
'label' => __('My custom field'),
'title' => __('My custom field'),
]
);
}
return $proceed();
}
}
/app/code/Vendor/CustomModule/view/adminhtml/ui_component/product_attribute_add_form.xml
<?xml version="1.0"?>
<form xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Ui:etc/ui_configuration.xsd">
<fieldset name="custom_fieldset">
<field name="my_custom_field">
<argument name="data" xsi:type="array">
<item name="config" xsi:type="array">
<item name="sortOrder" xsi:type="number">130</item>
<item name="dataType" xsi:type="string">string</item>
<item name="formElement" xsi:type="string">input</item>
<item name="label" xsi:type="string" translate="true">My custom field</item>
<item name="default" xsi:type="number">0</item>
</item>
</argument>
</field>
</fieldset>
</form>
The result is this:
But in the database I have the correct value that is currently 5
Somebody could help me please?
Best Answer
you forgot to setValues for the form Try these codes and run again