Hi,
I got some custom configuration fields working for a non-payment module, but have problems when i do the same for a payment module.
My issue is that the settting are readonly in the user interface (at every level of scope)
I cannot untick the tick box to change the default from the previous level.
I have the settings marked as sensitive and environmental too.
I've been able to set it with the command bin/magento config:set --scope=stores which seems odd seeing as it's supposed to be sensitive. However it's still not showing up in the admin ui.
Solved! Go to Solution.
So the reason for tick box being read-only was because the fields were sensitive/environmental.
Seems like a design decision that's not mentioned anywhere
Check the values of these showInDefault, showInWebsite, showInStore in system.xml and verify if these attributes has value 1 others set their values as 1.
<field id="title" translate="label" type="text" sortOrder="1" showInDefault="1" showInWebsite="1" showInStore="1">
Like this.
Thanks
---
If you've found my answer useful, please give"Kudos" and "Accept as Solution".
<field id="field1" translate="label" type="text" sortOrder="24" showInDefault="1" showInWebsite="1" showInStore="1"> <label>Field1</label> </field> <field id="field2" translate="label" type="text" sortOrder="25" showInDefault="1" showInWebsite="1" showInStore="1"> <label>Field2</label> </field> <field id="field3" translate="label" type="text" sortOrder="26" showInDefault="1" showInWebsite="0" showInStore="0"> <label>Field3</label> </field>
Hello @martin_alley
I can be of more help if you may provide the screenshot of the issue.
Thanks.
If I run the cli config:sensitive:set, the config value is stored successfully in app/etc/env.php
However I need to set it via the web ui.
Here's a screen shot of the config section page (store view) You can see that the check box is disabled, stopping me from setting the field at store scope
Hello @martin_alley again!
I won't be able to see the screenshot until and unless the moderator approves it. Please can you share the screenshot in the form of a link?
I prefer to keep the screenshot on here only.
The problem is that Stores Configuration section, no matter what scope I show, the configuration is readonly. Where there is a tick box "Use Default" that tick box is also disabled.
In my experiments I changed the default values in config.xml, however this didn't cause the values in app/etc/config.php to change.
I ended up editing config.php manually, where upon the website gave me an error and told me to run cron:run.
What is the proper way to get config.php to update with new default values?
Investigating the readonly checkbox, I was looking at module-config m-Model/Config/Reader/Source/Deployed/SettingChecker.php. The isReadOnly function returns true if there's a value for the config path - this seems a bit bizarre.
isReadOnly is called from module-config/Block/System/Config/Form.php. When adding a field (line 362 in function _initElement) it sets the following attributes
'can_use_default_value' => $this->canUseDefaultValue($field->showInDefault()), 'can_use_website_value' => $this->canUseWebsiteValue($field->showInWebsite()), 'can_restore_to_default' => $this->isCanRestoreToDefault($field->canRestore()),
I'm thinking between them, these settings affect whether the tick box is enabled or not, but I've not followed it through yet.
Anyone been here before?
Thanks
Martin