Magento 2: `system.xml` Yapılandırması için Varsayılan Değerler


24

Magento 1'de mümkün oldu

  1. etc/system.xmlDosyalardaki Sistem Yapılandırması bölümü için bir kullanıcı arabirimi yapılandırması

  2. etc/config.xmlDosyalarda bu alanlar için varsayılan değerleri ayarla

Sahnelerin arkasında Magento veri yükleyecekti core_config_datave hiçbir şey ayarlanmadıysa, varsayılan olarak global olarak ayarlanmış değerlere ayarlanmış olacaktı etc/config.xml. (Basitleştirilmiş sürüm - ondan biraz daha karmaşık )

Aynı şey Magento 2'de de yapılabilir mi? UI öğelerini - yoluyla yapılandırmanın mümkün olduğunu biliyorum system.xml- ancak bu ayarlar için varsayılan değerler ayarlamak mümkün mü? Eğer öyleyse, bu değerler nerede veya nasıl yapılandırılmalıdır?


ADMIN deposunda >> yapılandırma uzantı ayarımın sürüklenebilir ve sıralanabilir bir liste koymak istediğim bir uzantı geliştiriyorum ve bu nedenle bu belirli alan için özel şablon ayarlamam gerekiyor, bu yüzden özel şablon phtml dosyasını koyabilirim. system.xml içinde?
Yogesh Trivedi,

Yanıtlar:


42

evet, Magento 2 hala bir yapılandırma dosyasındaki varsayılan değerleri tanımlamanıza izin veriyor. namespace \ modulename \ vb \ 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>

Sistem konfigürasyonu 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
Bölüm adının, grup adının ve alan adlarının her bölümün etiket kimliği ile ilişkili olduğunu unutmayın.
Eirik

nasıl .php dosyasında bu varsayılan değeri elde edebilirsiniz
Anand Ontigeri

1
@AnandOntigeri use __construct () sınıfında $this->scopeConfig->getValue( $path, \Magento\Store\Model\ScopeInterface::SCOPE_STORE );nerede $this->scopeConfigbaşlatılmalı? \Magento\Framework\Cache\ConfigInterface $scopeConfig
Vasilii Burlacu,

Yapılandırılmış değerler yerine varsayılan değerleri almak mümkün müdür? Vasilii'nin yorumu geçerli değeri veriyor, ancak bir sitenin geçerli yapılandırmasını varsayılan değerlerle karşılaştırmak istiyorum (ve mümkünse sıfırlayın). Bu, config.xmlelle yükleme ve okumadan yapılabilir mi?
Jacques

@JaccoAmersfoort Varsayılan değerlere yalnızca üzerine yazılana kadar erişilebilir. Magento 2, sistem değerlerini core_config_data tablosunda saklar ve varsayılan değerleri mevcut değerden ayrı tutmaz.
Eirik

7

Magento2varsayılan değeri aynı gibi ayarlamanıza izin verir Magento1. İletişim modülüne baktığınızda Magento2,

system.xml kontak modülü için

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

ve config.xmlkontak modülü için

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

Eğer varsayılan değeri ayarlamak istiyorsak, onun kimliğiyle aynı olması gerekir.

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

sonra olur

 <default>
     <contact>
         <enabled>1</enabled>
     </contact>
 </default>
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.