[Bidragen av David Lambauer]{class="badge informative" title="David Lambauer"}
system.xml, referens
Med filen system.xml
kan du hantera systemkonfigurationen för Commerce. Använd det här avsnittet som allmän referens för filen system.xml
. Filen system.xml
finns under etc/adminhtml/system.xml
i ett visst Commerce 2-tillägg.
I följande kodutdrag visas filens vanligaste skelett:
<?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>
.Tabbar // Avsnitt // Grupper // Fält
I filen system.xml
är det möjligt att definiera fyra olika typer av entiteter, som är relaterade till varandra. I följande avsnitt beskrivs relationen mellan flikar, avsnitt, grupper och fält. På följande skärmbild visas systemkonfigurationen för Commerce 2 i serverdelen Admin.
De röda fyrkanterna markerar de olika typer som definieras i filen system.xml
:
Flikar används för att dela olika konfigurationsområden semantiskt. Varje flik kan innehålla ett eller flera avsnitt som också kan kallas undermenyer. Ett avsnitt innehåller en eller flera grupper.
Varje grupp listar ett eller flera fält. Du kan också använda en grupp för att lägga till en allmän beskrivning för följande fält. Som nämnts kan varje grupp ha ett eller flera fält. Fält är den minsta enheten
i systemkonfigurationskontexten.
Tabbar
En <tab>
-tagg refererar till antingen en befintlig eller en ny flik i systemkonfigurationen.
Flikattributsreferens
En <tab>
-tagg kan ha följande attribut:
id
typeId
translate
label
för att göra etiketten översättningsbar.string
sortOrder
float
class
string
Fliknodreferens
En <tab>
-tagg kan ha följande underordnade taggar:
label
string
Exempel: Skapa en flik
I följande kodutdrag visas hur du skapar en ny flik med exempeldata.
<?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>
Ovanstående kodutdrag skapar en ny flik med identifieraren A_UNIQUE_ID
. När attributet translate
definieras och refererar till etiketten, kan label
-noden översättas. Under återgivningsprocessen kommer CSS-klassen a-custom-css-class-to-style-this-tab
att användas på elementet HTML som skapades för den här fliken.sortOrder
-attributet med värdet 10
definierar tabbens position i listan över alla flikar när de återges.
Avsnitt
En <section>
-tagg refererar till antingen ett befintligt eller ett nytt avsnitt i systemkonfigurationen.
Avsnittsattributreferens
En <section>
-tagg kan ha följande attribut:
id
typeId
translate
label
för att göra etiketten översättningsbar.string
type
text
.string
sortOrder
float
showInDefault
1
om du vill visa avsnittet och 0
om du vill dölja avsnittet.int
showInStore
1
om du vill visa avsnittet och 0
om du vill dölja avsnittet.int
showInWebsite
1
om du vill visa avsnittet och 0
om du vill dölja avsnittet.int
canRestore
int
advanced
bool
extends
string
Avsnittsnodreferens
En <section>
-tagg kan ha följande underordnade taggar:
label
string
class
string
tab
typeTabId
header_css
string
resource
typeAclResourceId
group
typeGroup
frontend_model
typeModel
include
system_include.xsd
-kompatibla filer. Används vanligen för att strukturera stora system.xml
filer.includeType
Exempel: Skapa ett avsnitt och tilldela det till en flik
Följande kodfragment visar hur du använder det till att skapa ett nytt avsnitt.
<?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>
Avsnittet som beskrivs ovan definierar ID:t A_UNIQUE_SECTION_ID
, som är synligt i standardkonfigurationsvyn och i en butikskontext. label
-noden är översättningsbar. Avsnittet är associerat med fliken med ID:t A_UNIQUE_ID
. Avsnittet kan bara nås av användare som har de behörigheter som definierats i åtkomstkontrollistan VENDOR_MODULE::path_to_the_acl_resource
.
Grupper
Taggen <group>
används för att gruppera fält tillsammans.
Gruppattributreferens
En <group>
-tagg kan ha följande attribut:
id
typeId
translate
label
för att göra etiketten översättningsbar. Flera fält ska avgränsas med ett blanksteg.string
type
text
.string
sortOrder
float
showInDefault
1
om du vill visa gruppen och 0
om du vill dölja gruppen.int
showInStore
1
om du vill visa gruppen och 0
om du vill dölja gruppen.int
showInWebsite
1
om du vill visa gruppen och 0
om du vill dölja gruppen.int
canRestore
int
advanced
bool
extends
string
Gruppnodreferens
En <group>
-tagg kan ha följande underordnade taggar:
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 kan du använda det.string
hide_in_single_store_mode
1
döljer gruppen. 0
visar gruppen.int
field
field
group
unbounded
depends
1
. Den här noden förväntar sig en section/group/field
-sträng.depends
attribute
attribute
include
system_include.xsd
-kompatibla filer. Används vanligen för att strukturera stora system.xml
filer.includeType
more_url
, demo_url
och help_url
definieras av en PayPal-frontmodell som bara används en gång. Dessa noder kan inte återanvändas.Exempel: Skapa en grupp för ett visst avsnitt
Följande kodfragment visar hur du kan skapa en ny grupp.
<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>
Den grupp som beskrivs ovan definierar ID:t A_UNIQUE_GROUP_ID
, som är synligt i standardkonfigurationsvyn och i en butikskontext. Både label
och comment
är markerade som översättningsbara.
Fält
Taggen <field>
-Tag används i <group>
-taggar för att definiera specifika konfigurationsvärden.
Fältattributreferens
En <field>
-tagg kan ha följande attribut:
id
typeId
translate
label
för att göra etiketten översättningsbar. Flera fält ska avgränsas med ett blanksteg.string
type
text
.string
sortOrder
float
showInDefault
1
om du vill visa fältet och 0
om du vill dölja fältet.int
showInStore
1
om du vill visa fältet och 0
om du vill dölja fältet.int
showInWebsite
1
om du vill visa fältet och 0
om du vill dölja fältet.int
canRestore
int
advanced
bool
extends
string
Fälttypsreferens
En <field>
-tagg kan ha följande värden för attributet type=""
:
text
textarea
select
source_model
. Används även för Yes/No
markeringar. Se Magento\Search\Model\Adminhtml\System\Config\Source\Engine
för ett exempel.multiselect
select
, men flera alternativ är giltiga.button
Magento\ScheduledImportExport\Block\Adminhtml\System\Config\Clean
för ett exempel.obscure
**​**
. Värdet visas inte om du ändrar typen med"Inspect Element" i webbläsaren.password
obscure
, förutom att det dolda värdet inte är krypterat, så visas värdet om du tvingar en ändring av typen med Inspect Element i webbläsaren.file
label
time
allowspecific
source_model
som Magento\Shipping\Model\Config\Source\Allspecificcountries
image
note
frontend_model
för att återge anteckningen.Det går också att skapa en anpassad fälttyp. Detta görs ofta när en specialknapp med en åtgärd krävs. För att göra detta krävs två huvudelement:
- Skapa ett block i området
adminhtml
- Anger sökvägen
type=""
till det här blocket
Själva blocket kräver minst en __construct
-metod och en getElementHtml()
-metod. Magento_OfflineShipping är ett enkelt exempel på en anpassad typ.
I modulen OfflineShipping definieras exportknappen i Magento\OfflineShipping\Block\Adminhtml\Form\Field\Export
och fältdefinitionen ser ut så här:
<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>
Fältnodreferens
En <field>
-tagg kan ha följande underordnade taggar:
label
string
comment
<![CDATA[//]]>
HTML kan du använda det.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
är multiselect
för att ange att ett fält kan vara tomt.int
if_module_enabled
typeModule
base_url
upload_dir
för filöverföringar.typeUrl
upload_dir
typeUploadDir
button_url
button_url
och button_label
har angetts. Används vanligtvis i kombination med en anpassad frontmodell.typeUrl
button_label
button_label
och button_url
har angetts. Används vanligtvis i kombination med en anpassad frontmodell.string
more_url
typeUrl
demo_url
typeUrl
hide_in_single_store_mode
1
döljer gruppen. 0
visar gruppen.int
options
complexType
depends
1
. Den här noden förväntar sig en section/group/field
-sträng.complexType
attribute
complexType
requires
complexType
more_url
, demo_url
, requires
och options
definieras av en annan kärnbetalningsmodell och används bara en gång. Dessa noder kan inte återanvändas.Exempel: Skapa två fält i en viss grupp
<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>
I exemplet ovan skapas två fält, både synliga/konfigurerbara som standard och i butiksvyn. Båda fälten har en kommentar och ett verktygstips som beskriver syftet för användaren. label
-noden är översättningsbar.
Fältet med identifieraren ANOTHER_UNIQUE_FIELD_ID
är synligt när den angivna modulen i if_module_enabled
är aktiverad globalt. Fältet validerar också dess värde mot reglerna required-entry
och no-whitespace
.
Fältet med identifieraren A_UNIQUE_FIELD_ID
definierar en annan källmodell som tillhandahåller värdena Yes
och No
.
Vanliga källmodeller
Följande källmodeller tillhandahålls av Commerce 2 Core. I allmänhet finns det många fler källmodeller. I följande lista beskrivs de vanligaste. Observera att dessa källmodeller kräver att fältattributet type
anges till select
för att fungera korrekt.
Magento\Config\Model\Config\Source\Yesnocustom
Yes
, No
och Specified
.Magento\Config\Model\Config\Source\Enabledisable
Enable
, Disable
. Sparar värdena som 0
och 1
i databasen.Magento\AdminNotification\Model\Config\Source\Frequency
1 Hour
,2 Hours
,6 Hours
,12 Hours
och 24 Hours
. Värden sparas som heltal.Magento\Catalog\Model\Config\Source\TimeFormat
Magento\Cron\Model\Config\Source\Frequency
Daily
, Weekly
och Monthly
. Värden sparas i databasen som D
, W
och M
.Magento\GoogleAdwords\Model\Config\Source\Language
Magento\Config\Model\Config\Source\Locale
Fältvalidering
Ett fält kan ha en eller flera valideringsklasser tilldelade för att säkerställa att användarens indata uppfyller kraven för tillägget. Valideringsregler kan tillämpas med taggen <validate>
.
I följande exempel valideras ett fält och flera olika valideringsregler läggs till.
<field id="A_CUSTOM_IDENTIFIER" showInDefault="1" showInWebsite="0" showInStore="1">
<validate>required-entry validate-clean-url no-whitespace</validate>
</field>
Följande valideringsregler är tillgängliga:
alphanumeric
integer
ipv4
ipv6
letters-only
abcABC
.letters-with-basic-punc
Måste skicka följande uttryck:
/^[a-z\-.,()\u0027\u0022\s]+$/i
.mobileUK
no-marginal-whitespace
no-whitespace
phoneUK
phoneUS
required-entry
validate-no-empty
).Meddelande om verifieringsfel:"Detta är ett obligatoriskt fält."
time
15
, 15:05
eller 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
eller www.example.com
.validate-currency-dollar
validate-data
Det första tecknet måste vara en bokstav.
(Måste matcha uttryck:
/^[A-Za-z]+[A-Za-z0-9_]+$/
)Meddelande om verifieringsfel: "Använd endast bokstäver (a-z eller A-Z), siffror (0-9) eller understreck (_) i det här fältet, och det första tecknet ska vara en bokstav."
validate-date-au
validate-email
validate-emailSender
validate-fax
validate-no-empty
requried-entry
).Meddelande om verifieringsfel: "Tomt värde."
validate-no-html-tags
validate-password
validate-phoneLax
validate-phoneStrict
validate-select
null
-värde, ett strängvärde på none
eller en stränglängd på 0.validate-ssn
validate-street
validate-url
validate-xml-identifier
validate-zip-us
vinUS
Standardvärden
Standardvärden för fält kan anges i modulens etc/config.xml
-fil genom att ange standardvärdet i noden section/group/field_ID
.
Exempel: Anger standardvärdet för ANOTHER_UNIQUE_FIELD_ID
(standardomfång)
<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>
Exempel: Anger standardvärdet för ANOTHER_UNIQUE_FIELD_ID
(webbplatsomfattning)
Använd taggen websites
och ange standardvärdet för en specifik webbplats.
<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>