Magento 2:“ system.xml”配置的默认值


24

在Magento 1中,可以

  1. etc/system.xml文件中为“系统配置”部分配置用户界面

  2. etc/config.xml文件中的这些字段设置默认值

在后台,Magento将从中加载数据core_config_data,如果未设置任何内容,则默认为在中全局设置的值etc/config.xml。(简化版- 比这复杂一些

Magento 2可以做同样的事情吗?我知道可以通过配置UI元素,system.xml但是可以为这些设置设置默认值吗?如果是这样,应在何处或如何配置这些值?


我正在开发一个扩展,在ADMIN存储>>配置中,我的扩展设置中我想放置可拖动和可排序的属性列表,因此我需要为此特定字段设置自定义模板,因此有什么方法可以放置自定义模板phtml文件在system.xml中?
Yogesh Trivedi

Answers:


42

是的,Magento 2仍然允许您在配置文件中定义默认值。名称空间\模块名称\ etc \ config.xml

<?xml version="1.0"?>
     <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Store:etc/config.xsd">
        <default>
            <sectionname>
                <groupname>
                    <fieldid>1</fieldid>
                </groupname>
            </sectionname>
        </default>
    </config>

系统配置system.xml

<?xml version="1.0"?>

    <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Config:etc/system_file.xsd">
        <system>
            <tab id="namespace_tab" translate="label" sortOrder="1">
                <label>COnfig Title</label>
            </tab>
            <section id="sectionname" translate="label" sortOrder="1" showInDefault="1" 
    showInWebsite="1" showInStore="1">
                <label>Some Title</label>
                <tab>namespace_tab</tab>
                <resource>Namespace_Modulename::system_config</resource>
                <group id="groupname" translate="label" type="text" sortOrder="1" showInDefault="1" 
    showInWebsite="1" showInStore="1">
                    <label>Some Configuration</label>
                    <field id="fieldid" translate="label" type="select" sortOrder="1" 
    showInDefault="1" showInWebsite="1" showInStore="1">
                        <label>Enable in frontend</label>
                        <source_model>Magento\Config\Model\Config\Source\Yesno</source_model>
                    </field>
                 </group>   
            </section>
        </system>
    </config>

1
请注意,sectionname,groupname和fieldid均与每个部分的标签ID相关。
Eirik

我们如何在.php文件中获取此默认值
Anand Ontigeri

1
@AnandOntigeri使用 $this->scopeConfig->getValue( $path, \Magento\Store\Model\ScopeInterface::SCOPE_STORE );$this->scopeConfig必须在类__construct()方法中实例化Where 。 \Magento\Framework\Cache\ConfigInterface $scopeConfig
Vasilii Burlacu

是否可以获取默认值而不是已配置的值?Vasilii的注释提供了当前值,但是我想将站点的当前配置与默认值进行比较(如果可能,请重置它)。无需config.xml手动加载和阅读即可完成吗?
雅克

@JaccoAmersfoort只有在覆盖默认值之前,才能访问它们。Magento 2将系统值存储在core_config_data表中,并且不存储与当前值分开的默认值。
艾瑞克(Eirik)

7

Magento2允许您设置默认值,例如Magento1。当您从中查看联系人模块时Magento2

system.xml 用于触点模块

<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Config:etc/system_file.xsd">
    <system>
        <section id="contact" translate="label" type="text" sortOrder="100" showInDefault="1" showInWebsite="1" showInStore="1">
            <label>Contacts</label>
            <tab>general</tab>
            <resource>Magento_Contact::contact</resource>
            <group id="contact" translate="label" type="text" sortOrder="10" showInDefault="1" showInWebsite="1" showInStore="1">
                <label>Contact Us</label>
                <field id="enabled" translate="label" type="select" sortOrder="10" showInDefault="1" showInWebsite="1" showInStore="1">
                    <label>Enable Contact Us</label>
                    <source_model>Magento\Config\Model\Config\Source\Yesno</source_model>
                    <backend_model>Magento\Contact\Model\System\Config\Backend\Links</backend_model>
                </field>
            </group>
            <group id="email" translate="label" type="text" sortOrder="50" showInDefault="1" showInWebsite="1" showInStore="1">
                <label>Email Options</label>
                <field id="recipient_email" translate="label" type="text" sortOrder="10" showInDefault="1" showInWebsite="1" showInStore="1">
                    <label>Send Emails To</label>
                    <validate>validate-email</validate>
                </field>
                <field id="sender_email_identity" translate="label" type="select" sortOrder="20" showInDefault="1" showInWebsite="1" showInStore="1">
                    <label>Email Sender</label>
                    <source_model>Magento\Config\Model\Config\Source\Email\Identity</source_model>
                </field>
                <field id="email_template" translate="label comment" type="select" sortOrder="30" showInDefault="1" showInWebsite="1" showInStore="1">
                    <label>Email Template</label>
                    <comment>Email template chosen based on theme fallback when "Default" option is selected.</comment>
                    <source_model>Magento\Config\Model\Config\Source\Email\Template</source_model>
                </field>
            </group>
        </section>
    </system>
</config>

config.xml用于接触模块

<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Store:etc/config.xsd">
    <default>
            <contact>
                <enabled>1</enabled>
            </contact>
            <email>
                <recipient_email>
                    <![CDATA[hello@example.com]]>
                </recipient_email>
                <sender_email_identity>custom2</sender_email_identity>
                <email_template>contact_email_email_template</email_template>
            </email>
    </default>
</config>

如果要设置默认值,则必须匹配其ID,例如

<section id="contact"> <group id="contact"> <field id="enabled">

然后变成

 <default>
     <contact>
         <enabled>1</enabled>
     </contact>
 </default>
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.