마 젠토 2 :`system.xml` 설정의 기본값


24

마 젠토 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

답변:


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 사용 클래스 __construct () 메소드에서 인스턴스화해야합니다. $this->scopeConfig->getValue( $path, \Magento\Store\Model\ScopeInterface::SCOPE_STORE );$this->scopeConfig\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>

기본값을 설정하려면 다음과 같이 ID를 일치시켜야합니다.

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