[데이비드 램바우어에 의해 기여]{class="badge informative" title="데이비드 램바우어"} [PaaS만]{class="badge informative" title="Adobe Commerce 온 클라우드 프로젝트(Adobe 관리 PaaS 인프라) 및 온프레미스 프로젝트에만 적용됩니다."}
system.xml 참조
system.xml 파일을 사용하면 Commerce 시스템 구성을 관리할 수 있습니다. 이 항목을 system.xml 파일에 대한 일반 참조로 사용하십시오. system.xml 파일은 지정된 Commerce 2 확장의 etc/adminhtml/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>
<!-- PLACE YOUR MODULE SPECIFIC CONFIGURATION HERE -->
</system>
</config>
bin/magento dev:urn-catalog:generate [--ide IDE] [--] <path>을(를) 실행할 수 있습니다.탭 // 섹션 // 그룹/ 필드
system.xml 파일에서 서로 관련된 네 가지 다른 엔터티 형식을 정의할 수 있습니다. 다음 섹션에서는 탭, 섹션, 그룹 및 필드 간의 관계를 설명합니다. 다음 스크린샷에는 관리 백엔드의 Commerce 2 시스템 구성이 표시됩니다.
빨간색 사각형은 system.xml 파일에 정의된 다른 형식을 표시합니다.
탭은 다른 구성 영역을 의미론적으로 분할하는 데 사용됩니다. 각 탭에는 하위 메뉴로도 참조할 수 있는 섹션이 하나 이상 포함될 수 있습니다. 섹션에는 하나 이상의 그룹이 포함됩니다.
각 그룹에는 하나 이상의 필드가 나열됩니다. 그룹을 사용하여 다음 필드에 대한 일반 설명을 추가할 수도 있습니다. 언급된 바와 같이, 각 그룹은 하나 이상의 필드를 가질 수 있다. 필드는 가장 작은 엔티티입니다.
시스템 구성 컨텍스트에서 다음을 수행합니다.
탭
<tab> 태그는 시스템 구성의 기존 또는 새 탭에 대한 참조입니다.
탭 속성 참조
<tab> 태그에 다음 특성이 있을 수 있습니다.
idtypeIdtranslatelabel을(를) 제공하십시오.stringsortOrderfloatclassstring탭 노드 참조
<tab> 태그에 다음 하위 항목이 있을 수 있습니다.
labelstring예: 탭 만들기
다음 코드 조각은 예제 데이터가 있는 새 탭을 만드는 방법을 보여 줍니다.
<?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="A_UNIQUE_ID" translate="label" class="a-custom-css-class-to-style-this-tab" sortOrder="10">
<label>A meaningful label</label>
</tab>
</system>
</config>
위의 코드 조각은 식별자가 A_UNIQUE_ID인 새 탭을 만듭니다. translate 특성이 정의되어 있고 레이블을 참조하므로 label 노드를 변환할 수 있습니다. 렌더링 프로세스 중에 CSS 클래스 a-custom-css-class-to-style-this-tab이(가) 이 탭에 대해 만들어진 HTML 요소에 적용됩니다.
값이 sortOrder인 10 특성은 렌더링할 때 모든 탭 목록에서 탭의 위치를 정의합니다.
섹션
<section> 태그는 시스템 구성의 기존 또는 새 섹션에 대한 참조입니다.
섹션 속성 참조
<section> 태그에 다음 특성이 있을 수 있습니다.
idtypeIdtranslatelabel을(를) 제공하십시오.stringtypetext입니다.stringsortOrderfloatshowInDefault1을(를) 지정하고 섹션을 숨기려면 0을(를) 지정합니다.intshowInStore1을(를) 지정하고 섹션을 숨기려면 0을(를) 지정합니다.intshowInWebsite1을(를) 지정하고 섹션을 숨기려면 0을(를) 지정합니다.intcanRestoreintadvancedboolextendsstring섹션 노드 참조
<section> 태그에 다음 하위 항목이 있을 수 있습니다.
labelstringclassstringtabtypeTabIdheader_cssstringresourcetypeAclResourceIdgrouptypeGroupfrontend_modeltypeModelincludesystem_include.xsd개 파일을 포함하는 데 사용됩니다. 일반적으로 큰 system.xml개 파일을 구성하는 데 사용됩니다.includeType예: 섹션을 만들고 탭에 할당
다음 코드 조각은 새 섹션 만들기의 기본 사용을 보여 줍니다.
<?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="A_UNIQUE_ID" translate="label" class="a-custom-css-class-to-style-this-tab" sortOrder="10">
<label>A meaningful label</label>
</tab>
<section id="A_UNIQUE_SECTION_ID" showInDefault="1" showInWebsite="0" showInStore="1" sortOrder="10" translate="label">
<label>A meaningful section label</label>
<tab>A_UNIQUE_ID</tab>
<resource>VENDOR_MODULE::path_to_the_acl_resource</resource>
</section>
</system>
</config>
위에서 설명한 섹션은 ID A_UNIQUE_SECTION_ID을(를) 정의합니다. 이 ID는 기본 구성 보기 및 저장소 컨텍스트에 표시됩니다. label 노드를 변환할 수 있습니다. 섹션은 ID가 A_UNIQUE_ID인 탭에 연결됩니다. ACL VENDOR_MODULE::path_to_the_acl_resource에 정의된 권한이 있는 사용자만 섹션에 액세스할 수 있습니다.
그룹
<group> 태그는 필드를 함께 그룹화하는 데 사용됩니다.
그룹 속성 참조
<group> 태그에 다음 특성이 있을 수 있습니다.
idtypeIdtranslatelabel을(를) 제공하십시오. 여러 필드는 공백으로 구분해야 합니다.stringtypetext입니다.stringsortOrderfloatshowInDefault1을(를) 지정하고 그룹을 숨기려면 0을(를) 지정합니다.intshowInStore1을(를) 지정하고 그룹을 숨기려면 0을(를) 지정합니다.intshowInWebsite1을(를) 지정하고 그룹을 숨기려면 0을(를) 지정합니다.intcanRestoreintadvancedboolextendsstring그룹 노드 참조
<group> 태그에 다음 하위 항목이 있을 수 있습니다.
labelstringfieldset_cssstringfrontend_modeltypeModelclone_modeltypeModelclone_fieldsinthelp_urltypeUrlmore_urltypeUrldemo_linktypeUrlcomment<![CDATA[//]]>을(를) 사용하여 HTML을 적용할 수 있습니다.stringhide_in_single_store_mode1은(는) 그룹을 숨기고, 0은(는) 그룹을 표시합니다.intfieldfieldgroupunboundeddepends1인 경우에만 특정 필드/그룹을 표시하는 데 사용됩니다. 이 노드에는 section/group/field 문자열이 필요합니다.dependsattributeattributeincludesystem_include.xsd개 파일을 포함하는 데 사용됩니다. 일반적으로 큰 system.xml개 파일을 구성하는 데 사용됩니다.includeTypemore_url, demo_url 및 help_url 노드는 한 번만 사용되는 PayPal 프론트엔드 모델로 정의됩니다. 이러한 노드는 재사용할 수 없습니다.예: 주어진 섹션에 대한 그룹 만들기
다음 코드 조각은 새 그룹을 만드는 기본 사용 방법을 보여 줍니다.
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Config:etc/system_file.xsd">
<system>
<tab id="A_UNIQUE_ID" translate="label" class="a-custom-css-class-to-style-this-tab" sortOrder="10">
<label>A meaningful label</label>
</tab>
<section id="A_UNIQUE_SECTION_ID" showInDefault="1" showInWebsite="0" showInStore="1" sortOrder="10" translate="label">
<label>A meaningful section label</label>
<tab>A_UNIQUE_ID</tab>
<resource>VENDOR_MODULE::path_to_the_acl_resource</resource>
<group id="A_UNIQUE_GROUP_ID" translate="label comment" sortOrder="10" showInDefault="1" showInWebsite="0" showInStore="1">
<label>A meaningful group label</label>
<comment>An additional comment helping users to understand the effect when configuring the fields defined in this group.</comment>
<!-- Add your fields here. -->
</group>
</section>
</system>
</config>
위에서 설명한 그룹은 ID A_UNIQUE_GROUP_ID을(를) 정의하며, 기본 구성 보기와 저장소 컨텍스트에 표시됩니다. label과(와) comment은(는) 모두 변환 가능한 것으로 표시됩니다.
필드
<field>-태그는 <group>-태그 내에서 특정 구성 값을 정의하는 데 사용됩니다.
필드 속성 참조
<field> 태그에 다음 특성이 있을 수 있습니다.
idtypeIdtranslatelabel을(를) 제공하십시오. 여러 필드는 공백으로 구분해야 합니다.stringtypetext입니다.stringsortOrderfloatshowInDefault1을(를) 지정하고 필드를 숨기려면 0을(를) 지정합니다.intshowInStore1을(를) 지정하고 필드를 숨기려면 0을(를) 지정합니다.intshowInWebsite1을(를) 지정하고 필드를 숨기려면 0을(를) 지정합니다.intcanRestoreintadvancedboolextendsstring필드 유형 참조
<field>-Tag에는 type="" 특성에 대해 다음 값이 있을 수 있습니다.
texttextareaselectsource_model이(가) 필요할 수 있습니다. Yes/No개 선택 항목에도 사용됩니다. 예제는 Magento\Search\Model\Adminhtml\System\Config\Source\Engine을(를) 참조하십시오.multiselectselect과(와) 유사하지만 여러 옵션이 유효합니다.buttonMagento\ScheduledImportExport\Block\Adminhtml\System\Config\Clean을(를) 참조하십시오.obscure**​**(으)로 표시되는 텍스트 필드입니다. 브라우저에서 "요소 검사"를 사용하여 유형을 변경해도 값이 표시되지 않습니다.passwordobscure과(와) 마찬가지로 숨겨진 값이 암호화되지 않고 브라우저에서 "Inspect Element"를 사용하여 형식을 강제로 변경하면 값이 표시됩니다.filelabeltimeallowspecificsource_model과(와) 같은 Magento\Shipping\Model\Config\Source\Allspecificcountries 필요imagenotefrontend_model이(가) 필요합니다.사용자 지정 필드 유형을 만들 수도 있습니다. 이 작업은 작업이 있는 특수 버튼이 필요할 때 수행됩니다. 이렇게 하려면 두 가지 기본 요소가 필요합니다.
adminhtml영역에 블록을 만드는 중type=""을(를) 이 블록의 경로로 설정하는 중
블록 자체에는 최소한 __construct 메서드와 getElementHtml() 메서드가 필요합니다. Magento_OfflineShipping은(는) 사용자 지정 형식의 간단한 예입니다.
예를 들어 OfflineShipping 모듈에서 내보내기 단추가 Magento\OfflineShipping\Block\Adminhtml\Form\Field\Export에 정의되어 있고 필드 정의는 다음과 같습니다.
<field id="export" translate="label" type="Magento\OfflineShipping\Block\Adminhtml\Form\Field\Export" sortOrder="5" showInDefault="0" showInWebsite="1" showInStore="0">
<label>Export</label>
</field>
필드 노드 참조
<field> 태그에 다음 하위 항목이 있을 수 있습니다.
labelstringcomment<![CDATA[//]]>을(를) 사용하여 HTML을 적용할 수 있습니다.stringtooltipstringhintfrontend_model에서만 사용할 수 있습니다.stringfrontend_classstringfrontend_modeltypeModelbackend_modeltypeModelsource_modeltypeModelconfig_pathtypeConfigPathvalidatestringcan_be_emptytype이(가) multiselect인 경우 사용됩니다.intif_module_enabledtypeModulebase_urlupload_dir과(와) 함께 사용됩니다.typeUrlupload_dirtypeUploadDirbutton_urlbutton_url 및 button_label이(가) 지정된 경우 단추를 표시합니다. 일반적으로 사용자 지정 프론트엔드 모델과 함께 사용됩니다.typeUrlbutton_labelbutton_label 및 button_url이(가) 지정된 경우 단추를 표시합니다. 일반적으로 사용자 지정 프론트엔드 모델과 함께 사용됩니다.stringmore_urltypeUrldemo_urltypeUrlhide_in_single_store_mode1은(는) 그룹을 숨기고, 0은(는) 그룹을 표시합니다.intoptionscomplexTypedepends1인 경우에만 특정 필드/그룹을 표시하는 데 사용됩니다. 이 노드에는 section/group/field 문자열이 필요합니다.complexTypeattributecomplexTyperequirescomplexTypemore_url, demo_url, requires 및 options 노드는 다른 핵심 결제 모델에서 정의되며 한 번만 사용됩니다. 이러한 노드는 재사용할 수 없습니다.예: 주어진 그룹에 두 개의 필드 만들기
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Config:etc/system_file.xsd">
<system>
<tab id="A_UNIQUE_ID" translate="label" class="a-custom-css-class-to-style-this-tab" sortOrder="10">
<label>A meaningful label</label>
</tab>
<section id="A_UNIQUE_SECTION_ID" showInDefault="1" showInWebsite="0" showInStore="1" sortOrder="10" translate="label">
<label>A meaningful section label</label>
<tab>A_UNIQUE_ID</tab>
<resource>VENDOR_MODULE::path_to_the_acl_resource</resource>
<group id="A_UNIQUE_GROUP_ID" translate="label" sortOrder="10" showInDefault="1" showInWebsite="0" showInStore="1">
<label>A meaningful group label</label>
<comment>An additional comment helping users to understand the effect when configuring the fields defined in this group.</comment>
<field id="A_UNIQUE_FIELD_ID" translate="label" sortOrder="10" showInDefault="0" showInWebsite="0" showInStore="1" type="select">
<label>Feature Flag Example</label>
<comment>This field is an example for a basic yes or no select.</comment>
<tooltip>Usually these kinds of fields are used to enable or disable a given feature. Other fields might be dependent to this and will only appear if this field is set to yes.</tooltip>
<source_model>Magento\Config\Model\Config\Source\Yesno</source_model>
</field>
<field id="ANOTHER_UNIQUE_FIELD_ID" translate="label" sortOrder="10" showInDefault="0" showInWebsite="0" showInStore="1" type="text">
<label>A meaningful field label</label>
<comment>A descriptive text explaining this configuration field.</comment>
<tooltip>Another possible frontend element that also can be used to describe the meaning of this field. Will be displayed as a small icon beside the field.</tooltip>
<validate>required-entry no-whitespace</validate> <!-- Field is required and must not contain any whitespace. -->
<if_module_enabled>VENDOR_MODULE</if_module_enabled>
<depends> <!-- This field will only be visible if the field with the id A_UNIQUE_FIELD_ID is set to value 1 -->
<field id="A_UNIQUE_FIELD_ID">1</field>
</depends>
</field>
</group>
</section>
</system>
</config>
위의 예에서는 기본적으로 및 스토어 보기에서 표시/구성 가능한 두 개의 필드를 만듭니다. 두 필드에는 사용자에게 용도를 설명하는 댓글과 도구 설명이 있습니다. label 노드를 변환할 수 있습니다.ANOTHER_UNIQUE_FIELD_ID에서 지정한 모듈을 전체적으로 사용하도록 설정하면 식별자가 if_module_enabled인 필드가 표시됩니다. 또한 이 필드는 규칙 required-entry 및 no-whitespace에 대해 해당 값의 유효성을 검사합니다.
식별자가 A_UNIQUE_FIELD_ID인 필드는 해당 값 Yes 및 No을(를) 제공하는 다른 원본 모델을 정의합니다.
공통 소스 모델
Commerce 2 Core에서 제공하는 소스 모델은 다음과 같습니다. 일반적으로 소스 모델이 더 많습니다. 다음 목록은 가장 일반적인 소스 모델을 설명합니다. 이러한 원본 모델이 제대로 작동하려면 필드 특성 type을(를) select(으)로 설정해야 합니다.
Magento\Config\Model\Config\Source\YesnocustomYes, No 및 Specified 값을 제공합니다.Magento\Config\Model\Config\Source\EnabledisableEnable, Disable 값을 제공합니다. 값을 데이터베이스에 0 및 1(으)로 저장합니다.Magento\AdminNotification\Model\Config\Source\Frequency1 Hour,2 Hours,6 Hours,12 Hours 및 24 Hours 값을 제공합니다. 값은 정수로 저장됩니다.Magento\Catalog\Model\Config\Source\TimeFormatMagento\Cron\Model\Config\Source\FrequencyDaily, Weekly 및 Monthly 값을 제공합니다. 값이 데이터베이스에 D, W 및 M(으)로 저장됩니다.Magento\GoogleAdwords\Model\Config\Source\LanguageMagento\Config\Model\Config\Source\Locale필드 유효성 검사
필드에는 하나 이상의 유효성 검사기 클래스가 할당되어 사용자의 입력이 확장의 요구 사항을 충족하는지 확인할 수 있습니다. 유효성 검사 규칙은 <validate> 태그에 적용할 수 있습니다.
다음 예제에서는 필드의 유효성을 검사하고 몇 가지 다른 유효성 검사 규칙을 추가합니다.
<field id="A_CUSTOM_IDENTIFIER" showInDefault="1" showInWebsite="0" showInStore="1">
<validate>required-entry validate-clean-url no-whitespace</validate>
</field>
다음 유효성 검사 규칙을 사용할 수 있습니다.
alphanumericintegeripv4ipv6letters-onlyabcABC.letters-with-basic-punc다음 식을 전달해야 합니다.
/^[a-z\-.,()\u0027\u0022\s]+$/i.mobileUKno-marginal-whitespaceno-whitespacephoneUKphoneUSrequired-entryvalidate-no-empty과 동등한 유효성 검사)을 허용하지 않습니다.유효성 검사 실패 메시지: "필수 필드입니다."
time15, 15:05 또는 15:05:48.time12h3 am, 11:30 pm, 02:15:00 pm.validate-admin-passwordvalidate-alphanum-with-spacesvalidate-clean-urlhttps://www.example.com 또는 www.example.com.validate-currency-dollarvalidate-data첫 문자는 문자여야 합니다.
(식
/^[A-Za-z]+[A-Za-z0-9_]+$/)유효성 검사 실패 메시지: "이 필드에는 문자(a-z 또는 A-Z), 숫자(0-9) 또는 밑줄(_)만 사용하십시오. 첫 번째 문자는 문자여야 합니다."
validate-date-auvalidate-emailvalidate-emailSendervalidate-faxvalidate-no-emptyrequried-entry과 동등한 유효성 검사)을 허용하지 않습니다.유효성 검사 실패 메시지: "빈 값"
validate-no-html-tagsvalidate-passwordvalidate-phoneLaxvalidate-phoneStrictvalidate-selectnull 값, 문자열 값 none 또는 문자열 길이 0이 없도록 강제 적용합니다.validate-ssnvalidate-streetvalidate-urlvalidate-xml-identifiervalidate-zip-usvinUS기본값
etc/config.xml 노드에서 기본값을 지정하여 모듈의 section/group/field_ID 파일에 필드의 기본값을 설정할 수 있습니다.
예: ANOTHER_UNIQUE_FIELD_ID에 대한 기본값 설정(기본 범위)
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Store:etc/config.xsd">
<default>
<A_UNIQUE_SECTION_ID>
<A_UNIQUE_GROUP_ID>
<ANOTHER_UNIQUE_FIELD_ID>This is the default value</ANOTHER_UNIQUE_FIELD_ID>
</A_UNIQUE_GROUP_ID>
</A_UNIQUE_SECTION_ID>
</default>
</config>
예: ANOTHER_UNIQUE_FIELD_ID의 기본값 설정(웹 사이트 범위)
websites 태그를 사용하여 특정 웹 사이트에 대한 기본값을 지정하십시오.
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Store:etc/config.xsd">
<websites>
<WEBSITE_CODE>
<A_UNIQUE_SECTION_ID>
<A_UNIQUE_GROUP_ID>
<ANOTHER_UNIQUE_FIELD_ID>This is the default value</ANOTHER_UNIQUE_FIELD_ID>
</A_UNIQUE_GROUP_ID>
</A_UNIQUE_SECTION_ID>
</WEBSITE_CODE>
</websites>
</config>