Magento 2: Các giá trị mặc định cho cấu hình `system.xml`


24

Trong Magento 1, có thể

  1. Cấu hình giao diện người dùng cho phần Cấu hình hệ thống trong etc/system.xmltệp

  2. Đặt giá trị mặc định cho các trường đó trong etc/config.xmltệp

Đằng sau hậu trường, Magento sẽ tải dữ liệu từ core_config_datavà nếu không có gì được đặt, sẽ mặc định cho các giá trị được đặt trên toàn cầu etc/config.xml. (phiên bản đơn giản hóa - nó phức tạp hơn thế một chút )

Điều tương tự có thể được thực hiện trong Magento 2 không? Tôi biết có thể định cấu hình các thành phần UI thông qua system.xml- nhưng có thể đặt giá trị mặc định cho các cài đặt này không? Nếu vậy, những giá trị này nên được cấu hình ở đâu hoặc như thế nào?


Tôi đang phát triển một tiện ích mở rộng trong cửa hàng ADMIN >> cấu hình cài đặt tiện ích mở rộng của tôi, tôi muốn đặt danh sách có thể kéo và thuộc tính và do đó tôi cần đặt mẫu tùy chỉnh cho trường cụ thể này, vì vậy có cách nào tôi có thể đặt tệp phtml mẫu tùy chỉnh bên trong system.xml?
Yogesh Trivingi

Câu trả lời:


42

có, Magento 2 vẫn cho phép bạn xác định các giá trị mặc định bên trong tệp cấu hình. không gian tên \ 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>

Cấu hình hệ thống 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
Lưu ý rằng tên phần, tên nhóm và trườngid đều tương quan với id thẻ của mỗi phần.
Eirik

làm thế nào chúng ta có thể nhận được giá trị mặc định này trong tệp .php
Anand Ontigeri

1
@AnandOntigeri sử dụng $this->scopeConfig->getValue( $path, \Magento\Store\Model\ScopeInterface::SCOPE_STORE );Trường hợp $this->scopeConfigphải được khởi tạo trong phương thức lớp __construct (). \Magento\Framework\Cache\ConfigInterface $scopeConfig
Vasilii Burlacu

Có thể lấy các giá trị mặc định thay vì các giá trị được cấu hình không? Nhận xét của Vasili cho giá trị hiện tại, nhưng tôi muốn so sánh cấu hình hiện tại của một trang web với các giá trị mặc định (và nếu có thể, hãy đặt lại nó). Điều đó có thể được thực hiện mà không cần tải và đọc config.xmlbằng tay?
Jacques

@JaccoAmersfoort Các giá trị mặc định chỉ có thể truy cập cho đến khi chúng được ghi đè. Magento 2 lưu trữ các giá trị hệ thống trong bảng core_config_data và không lưu trữ các giá trị mặc định tách biệt với giá trị hiện tại.
Eirik

7

Magento2cho phép bạn đặt giá trị mặc định giống như Magento1. Khi bạn nhìn vào mô-đun liên lạc từ Magento2,

system.xml cho mô-đun liên lạc

<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.xmlcho các mô-đun liên lạc

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

Nếu chúng ta muốn đặt giá trị mặc định, thì chúng ta phải khớp với id của nó như

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

sau đó nó trở thành

 <default>
     <contact>
         <enabled>1</enabled>
     </contact>
 </default>
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.