Magento 2: ค่าเริ่มต้นสำหรับการกำหนดค่า `system.xml`


24

ใน Magento 1 มันเป็นไปได้ที่จะ

  1. การกำหนดค่าส่วนต่อประสานผู้ใช้สำหรับส่วนการกำหนดค่าระบบในetc/system.xmlไฟล์

  2. ตั้งค่าเริ่มต้นสำหรับฟิลด์เหล่านั้นในetc/config.xmlไฟล์

เบื้องหลังวีโอไอพีจะโหลดข้อมูลจากและถ้าไม่มีอะไรถูกกำหนดจะเริ่มต้นกับค่าที่ตั้งทั่วโลกในcore_config_data etc/config.xml(เวอร์ชั่นย่อ - มันซับซ้อนกว่านั้นนิดหน่อย )

สามารถทำสิ่งเดียวกันใน Magento 2 ได้หรือไม่? ฉันรู้ว่าเป็นไปได้ที่จะกำหนดค่าองค์ประกอบ UI ผ่านsystem.xml- แต่เป็นไปได้หรือไม่ที่จะตั้งค่าเริ่มต้นสำหรับการตั้งค่าเหล่านี้ ถ้าเป็นเช่นนั้นจะต้องกำหนดค่าเหล่านี้ที่ไหนหรืออย่างไร?


ฉันกำลังพัฒนาส่วนขยายที่อยู่ในร้านค้า ADMIN >> การกำหนดค่าการตั้งค่าส่วนขยายของฉันฉันต้องการใส่รายการที่สามารถลากและจัดเรียงคุณลักษณะได้ดังนั้นฉันต้องตั้งค่าแม่แบบที่กำหนดเองสำหรับฟิลด์นี้โดยเฉพาะ ใน system.xml
Yogesh Trivedi

คำตอบ:


42

ใช่ Magento 2 ยังช่วยให้คุณสามารถกำหนดค่าเริ่มต้นภายในไฟล์กำหนดค่าได้ namespace \ modulename \ 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
โปรดทราบว่าส่วนชื่อกลุ่มและเขตข้อมูลทั้งหมดมีความสัมพันธ์กับรหัสแท็กของแต่ละส่วน
Eirik

เราจะรับค่าเริ่มต้นนี้ในไฟล์. php ได้อย่างไร
Anand Ontigeri

1
@AnandOntigeri ใช้$this->scopeConfig->getValue( $path, \Magento\Store\Model\ScopeInterface::SCOPE_STORE );ที่ไหน$this->scopeConfigจะต้องมีอินสแตนซ์ในชั้นเรียน __construct () วิธีการ \Magento\Framework\Cache\ConfigInterface $scopeConfig
Vasilii Burlacu

เป็นไปได้หรือไม่ที่จะได้รับค่าเริ่มต้นแทนที่จะเป็นค่าที่กำหนดไว้? ข้อคิดเห็นของ Vasilii ให้ค่าปัจจุบัน แต่ฉันต้องการเปรียบเทียบการกำหนดค่าปัจจุบันของไซต์กับค่าเริ่มต้น (และหากเป็นไปได้ให้รีเซ็ตมัน) สามารถทำได้โดยไม่ต้องโหลดและอ่านconfig.xmlด้วยตนเอง?
Jacques

@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>

ถ้าเราต้องการตั้งค่าเริ่มต้นเราต้องจับคู่ไอดีของมัน

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

จากนั้นมันจะกลายเป็น

 <default>
     <contact>
         <enabled>1</enabled>
     </contact>
 </default>
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.