i am using Magento 2.3 , and in my case i have added the ui_components fields , it works fine , but the value entered is applicable to all store view , i want to add multi-store functionality to those fields , the value of a field must be shown just on the store view which i am selected ,
for example :
the field “link_to_custom_url”, his value entered in storeView English must be different to the storeView Japan
this is the fields that i have added
file category_form.xml
<form xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Ui:etc/ui_configuration.xsd">
<fieldset name="general" sortOrder="5">
<field name="include_in_menu" sortOrder="10" formElement="checkbox">
<argument name="data" xsi:type="array">
<item name="config" xsi:type="array">
<item name="visible" xsi:type="boolean">false</item>
</item>
</argument>
</field>
</fieldset>
<fieldset name="menu" sortOrder="8">
<settings>
<collapsible>true</collapsible>
<label>Menu</label>
</settings>
<field name="include_in_menu" sortOrder="10" formElement="checkbox">
<argument name="data" xsi:type="array">
<item name="config" xsi:type="array">
<item name="source" xsi:type="string">category</item>
<item name="default" xsi:type="number">1</item>
</item>
</argument>
<settings>
<validation>
<rule name="required-entry" xsi:type="boolean">false</rule>
</validation>
<dataType>boolean</dataType>
<label translate="true">Include in Menu</label>
</settings>
<formElements>
<checkbox>
<settings>
<valueMap>
<map name="false" xsi:type="string">0</map>
<map name="true" xsi:type="string">1</map>
</valueMap>
<prefer>toggle</prefer>
</settings>
</checkbox>
</formElements>
</field>
<field name="link_type" sortOrder="20" formElement="select">
<argument name="data" xsi:type="array">
<item name="config" xsi:type="array">
<item name="label" xsi:type="string" translate="true">Link Type</item>
<item name="component" xsi:type="string">Dnd_Menu/js/form/element/link_type</item>
<item name="visible" xsi:type="boolean">true</item>
<item name="dataType" xsi:type="string">string</item>
<item name="source" xsi:type="string">category</item>
<item name="validation" xsi:type="array">
<item name="required-entry" xsi:type="boolean">true</item>
</item>
</item>
</argument>
<formElements>
<select>
<settings>
<options>
<option name="0" xsi:type="array">
<item name="value" xsi:type="string">normal</item>
<item name="label" xsi:type="string" translate="true">Normal</item>
</option>
<option name="1" xsi:type="array">
<item name="value" xsi:type="string">cms_page</item>
<item name="label" xsi:type="string" translate="true">Cms Page</item>
</option>
<option name="2" xsi:type="array">
<item name="value" xsi:type="string">custom_url</item>
<item name="label" xsi:type="string" translate="true">Custom Url</item>
</option>
</options>
</settings>
</select>
</formElements>
</field>
<field name="link_to_custom_url" sortOrder="30" formElement="input">
<argument name="data" xsi:type="array">
<item name="config" xsi:type="array">
<item name="dataType" xsi:type="string">string</item>
<item name="source" xsi:type="string">category</item>
<item name="label" xsi:type="string" translate="true">Link to Custom Url</item>
<item name="visible" xsi:type="boolean">false</item>
<item name="required" xsi:type="boolean">false</item>
</item>
</argument>
</field>
<field name="link_to_cms_page" sortOrder="40" formElement="select">
<argument name="data" xsi:type="array">
<item name="options" xsi:type="object">DndMenuModelCategoryAttributeSourceCms</item>
<item name="config" xsi:type="array">
<item name="dataType" xsi:type="string">string</item>
<item name="source" xsi:type="string">category</item>
<item name="label" xsi:type="string" translate="true">Link to Cms Page</item>
<item name="visible" xsi:type="boolean">false</item>
<item name="required" xsi:type="boolean">false</item>
</item>
</argument>
</field>
</item>
</argument>
</field>
</fieldset>
</form>
this is the patch :
class InstallMenu implements DataPatchInterface
{
/**
* @var ModuleDataSetupInterface
*/
protected $moduleDataSetup;
/**
* @var EavSetupFactory
*/
protected $eavSetupFactory;
/**
* AddSwatchImageAttribute constructor.
* @param ModuleDataSetupInterface $moduleDataSetup
* @param EavSetupFactory $eavSetupFactory
*/
public function __construct(
ModuleDataSetupInterface $moduleDataSetup,
EavSetupFactory $eavSetupFactory
) {
$this->moduleDataSetup = $moduleDataSetup;
$this->eavSetupFactory = $eavSetupFactory;
}
/**
* {@inheritdoc}
*/
public function apply()
{
/** @var EavSetup $eavSetup */
$eavSetup = $this->eavSetupFactory->create(['setup' => $this->moduleDataSetup]);
$eavSetup->addAttribute(
'catalog_category',
'link_type',
[
'type' => 'varchar',
'backend' => '',
'frontend' => '',
'label' => 'Link Type',
'input' => 'select',
'class' => '',
'global' => Attribute::SCOPE_GLOBAL,
'visible' => true,
'required' => false,
'user_defined' => false,
'default' => '',
'searchable' => false,
'filterable' => true,
'comparable' => false,
'unique' => false,
'apply_to' => '',
'group' => 'Menu'
]
);
$eavSetup->addAttribute(
'catalog_category',
'link_to_cms_page',
[
'type' => 'varchar',
'backend' => '',
'frontend' => '',
'label' => 'Link to Cms Page',
'input' => 'select',
'class' => '',
'source' => Cms::class,
'global' => Attribute::SCOPE_GLOBAL,
'visible' => true,
'required' => false,
'user_defined' => false,
'default' => '',
'searchable' => false,
'filterable' => true,
'comparable' => false,
'unique' => false,
'apply_to' => '',
'group' => 'Menu'
]
);
$eavSetup->addAttribute(
'catalog_category',
'link_to_custom_url',
[
'type' => 'varchar',
'backend' => '',
'frontend' => '',
'label' => 'Link to Custom Url',
'input' => 'varchar',
'class' => '',
'source' => '',
'global' => Attribute::SCOPE_GLOBAL,
'visible' => true,
'required' => false,
'user_defined' => false,
'default' => '',
'searchable' => false,
'filterable' => true,
'comparable' => false,
'unique' => false,
'apply_to' => '',
'group' => 'Menu'
]
);
}
/**
* {@inheritdoc}
*/
public static function getDependencies()
{
return [];
}
/**
* {@inheritdoc}
*/
public function getAliases()
{
return [];
}
}
can anyone help please ?