[데이비드 램바우어에 의해 기여]{class="badge informative" title="데이비드 램바우어"}
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>
태그에 다음 특성이 있을 수 있습니다.
id
typeId
translate
label
을(를) 제공하십시오.string
sortOrder
float
class
string
탭 노드 참조
<tab>
태그에 다음 하위 항목이 있을 수 있습니다.
label
string
예: 탭 만들기
다음 코드 조각은 예제 데이터가 있는 새 탭을 만드는 방법을 보여 줍니다.
<?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 요소에 적용됩니다.
값이 10
인 sortOrder
특성은 렌더링할 때 모든 탭 목록에서 탭의 위치를 정의합니다.
섹션
<section>
태그는 시스템 구성의 기존 또는 새 섹션에 대한 참조입니다.
섹션 속성 참조
<section>
태그에 다음 특성이 있을 수 있습니다.
id
typeId
translate
label
을(를) 제공하십시오.string
type
text
입니다.string
sortOrder
float
showInDefault
1
을(를) 지정하고 섹션을 숨기려면 0
을(를) 지정합니다.int
showInStore
1
을(를) 지정하고 섹션을 숨기려면 0
을(를) 지정합니다.int
showInWebsite
1
을(를) 지정하고 섹션을 숨기려면 0
을(를) 지정합니다.int
canRestore
int
advanced
bool
extends
string
섹션 노드 참조
<section>
태그에 다음 하위 항목이 있을 수 있습니다.
label
string
class
string
tab
typeTabId
header_css
string
resource
typeAclResourceId
group
typeGroup
frontend_model
typeModel
include
system_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>
태그에 다음 특성이 있을 수 있습니다.
id
typeId
translate
label
을(를) 제공하십시오. 여러 필드는 공백으로 구분해야 합니다.string
type
text
입니다.string
sortOrder
float
showInDefault
1
을(를) 지정하고 그룹을 숨기려면 0
을(를) 지정합니다.int
showInStore
1
을(를) 지정하고 그룹을 숨기려면 0
을(를) 지정합니다.int
showInWebsite
1
을(를) 지정하고 그룹을 숨기려면 0
을(를) 지정합니다.int
canRestore
int
advanced
bool
extends
string
그룹 노드 참조
<group>
태그에 다음 하위 항목이 있을 수 있습니다.
label
string
fieldset_css
string
frontend_model
typeModel
clone_model
typeModel
clone_fields
int
help_url
typeUrl
more_url
typeUrl
demo_link
typeUrl
comment
<![CDATA[//]]>
을(를) 사용하여 HTML을 적용할 수 있습니다.string
hide_in_single_store_mode
1
은(는) 그룹을 숨기고, 0
은(는) 그룹을 표시합니다.int
field
field
group
unbounded
depends
1
인 경우에만 특정 필드/그룹을 표시하는 데 사용됩니다. 이 노드에는 section/group/field
문자열이 필요합니다.depends
attribute
attribute
include
system_include.xsd
개 파일을 포함하는 데 사용됩니다. 일반적으로 큰 system.xml
개 파일을 구성하는 데 사용됩니다.includeType
more_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>
태그에 다음 특성이 있을 수 있습니다.
id
typeId
translate
label
을(를) 제공하십시오. 여러 필드는 공백으로 구분해야 합니다.string
type
text
입니다.string
sortOrder
float
showInDefault
1
을(를) 지정하고 필드를 숨기려면 0
을(를) 지정합니다.int
showInStore
1
을(를) 지정하고 필드를 숨기려면 0
을(를) 지정합니다.int
showInWebsite
1
을(를) 지정하고 필드를 숨기려면 0
을(를) 지정합니다.int
canRestore
int
advanced
bool
extends
string
필드 유형 참조
<field>
-Tag에는 type=""
특성에 대해 다음 값이 있을 수 있습니다.
text
textarea
select
source_model
이(가) 필요할 수 있습니다. Yes/No
개 선택 항목에도 사용됩니다. 예제는 Magento\Search\Model\Adminhtml\System\Config\Source\Engine
을(를) 참조하십시오.multiselect
select
과(와) 유사하지만 여러 옵션이 유효합니다.button
Magento\ScheduledImportExport\Block\Adminhtml\System\Config\Clean
을(를) 참조하십시오.obscure
**​**
(으)로 표시되는 텍스트 필드입니다. 브라우저에서 "Inspect 요소"를 사용하여 유형을 변경해도 값이 표시되지 않습니다.password
obscure
과(와) 마찬가지로 숨겨진 값이 암호화되지 않고 브라우저에서 "Inspect 요소"를 사용하여 형식을 강제로 변경하면 값이 표시됩니다.file
label
time
allowspecific
Magento\Shipping\Model\Config\Source\Allspecificcountries
과(와) 같은 source_model
필요image
note
frontend_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>
태그에 다음 하위 항목이 있을 수 있습니다.
label
string
comment
<![CDATA[//]]>
을(를) 사용하여 HTML을 적용할 수 있습니다.string
tooltip
string
hint
frontend_model
에서만 사용할 수 있습니다.string
frontend_class
string
frontend_model
typeModel
backend_model
typeModel
source_model
typeModel
config_path
typeConfigPath
validate
string
can_be_empty
type
이(가) multiselect
인 경우 사용됩니다.int
if_module_enabled
typeModule
base_url
upload_dir
과(와) 함께 사용됩니다.typeUrl
upload_dir
typeUploadDir
button_url
button_url
및 button_label
이(가) 지정된 경우 단추를 표시합니다. 일반적으로 사용자 지정 프론트엔드 모델과 함께 사용됩니다.typeUrl
button_label
button_label
및 button_url
이(가) 지정된 경우 단추를 표시합니다. 일반적으로 사용자 지정 프론트엔드 모델과 함께 사용됩니다.string
more_url
typeUrl
demo_url
typeUrl
hide_in_single_store_mode
1
은(는) 그룹을 숨기고, 0
은(는) 그룹을 표시합니다.int
options
complexType
depends
1
인 경우에만 특정 필드/그룹을 표시하는 데 사용됩니다. 이 노드에는 section/group/field
문자열이 필요합니다.complexType
attribute
complexType
requires
complexType
more_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
노드를 변환할 수 있습니다.if_module_enabled
에서 지정한 모듈을 전체적으로 사용하도록 설정하면 식별자가 ANOTHER_UNIQUE_FIELD_ID
인 필드가 표시됩니다. 또한 이 필드는 규칙 required-entry
및 no-whitespace
에 대해 해당 값의 유효성을 검사합니다.
식별자가 A_UNIQUE_FIELD_ID
인 필드는 해당 값 Yes
및 No
을(를) 제공하는 다른 원본 모델을 정의합니다.
공통 소스 모델
Commerce 2 Core에서 제공하는 소스 모델은 다음과 같습니다. 일반적으로 소스 모델이 더 많습니다. 다음 목록은 가장 일반적인 소스 모델을 설명합니다. 이러한 원본 모델이 제대로 작동하려면 필드 특성 type
을(를) select
(으)로 설정해야 합니다.
Magento\Config\Model\Config\Source\Yesnocustom
Yes
, No
및 Specified
값을 제공합니다.Magento\Config\Model\Config\Source\Enabledisable
Enable
, Disable
값을 제공합니다. 값을 데이터베이스에 0
및 1
(으)로 저장합니다.Magento\AdminNotification\Model\Config\Source\Frequency
1 Hour
,2 Hours
,6 Hours
,12 Hours
및 24 Hours
값을 제공합니다. 값은 정수로 저장됩니다.Magento\Catalog\Model\Config\Source\TimeFormat
Magento\Cron\Model\Config\Source\Frequency
Daily
, Weekly
및 Monthly
값을 제공합니다. 값이 데이터베이스에 D
, W
및 M
(으)로 저장됩니다.Magento\GoogleAdwords\Model\Config\Source\Language
Magento\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>
다음 유효성 검사 규칙을 사용할 수 있습니다.
alphanumeric
integer
ipv4
ipv6
letters-only
abcABC
.letters-with-basic-punc
다음 식을 전달해야 합니다.
/^[a-z\-.,()\u0027\u0022\s]+$/i
.mobileUK
no-marginal-whitespace
no-whitespace
phoneUK
phoneUS
required-entry
validate-no-empty
과 동등한 유효성 검사)을 허용하지 않습니다.유효성 검사 실패 메시지: "필수 필드입니다."
time
15
, 15:05
또는 15:05:48
.time12h
3 am
, 11:30 pm
, 02:15:00 pm
.validate-admin-password
validate-alphanum-with-spaces
validate-clean-url
https://www.example.com
또는 www.example.com
.validate-currency-dollar
validate-data
첫 문자는 문자여야 합니다.
(식
/^[A-Za-z]+[A-Za-z0-9_]+$/
)유효성 검사 실패 메시지: "이 필드에는 문자(a-z 또는 A-Z), 숫자(0-9) 또는 밑줄(_)만 사용하십시오. 첫 번째 문자는 문자여야 합니다."
validate-date-au
validate-email
validate-emailSender
validate-fax
validate-no-empty
requried-entry
과 동등한 유효성 검사)을 허용하지 않습니다.유효성 검사 실패 메시지: "빈 값"
validate-no-html-tags
validate-password
validate-phoneLax
validate-phoneStrict
validate-select
null
값, 문자열 값 none
또는 문자열 길이 0이 없도록 강제 적용합니다.validate-ssn
validate-street
validate-url
validate-xml-identifier
validate-zip-us
vinUS
기본값
section/group/field_ID
노드에서 기본값을 지정하여 모듈의 etc/config.xml
파일에 필드의 기본값을 설정할 수 있습니다.
예: 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>