[Bidragen av David Lambauer]{class="badge informative" title="David Lambauer"} [Endast PaaS]{class="badge informative" title="Gäller endast Adobe Commerce i molnprojekt (Adobe-hanterad PaaS-infrastruktur) och lokala projekt."}
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:
idtypeIdtranslatelabel för att göra etiketten översättningsbar.stringsortOrderfloatclassstringFliknodreferens
En <tab>-tagg kan ha följande underordnade taggar:
labelstringExempel: 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 tillämpas på det HTML-element 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:
idtypeIdtranslatelabel för att göra etiketten översättningsbar.stringtypetext.stringsortOrderfloatshowInDefault1 om du vill visa avsnittet och 0 om du vill dölja avsnittet.intshowInStore1 om du vill visa avsnittet och 0 om du vill dölja avsnittet.intshowInWebsite1 om du vill visa avsnittet och 0 om du vill dölja avsnittet.intcanRestoreintadvancedboolextendsstringAvsnittsnodreferens
En <section>-tagg kan ha följande underordnade taggar:
labelstringclassstringtabtypeTabIdheader_cssstringresourcetypeAclResourceIdgrouptypeGroupfrontend_modeltypeModelincludesystem_include.xsd-kompatibla filer. Används vanligen för att strukturera stora system.xml filer.includeTypeExempel: 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:
idtypeIdtranslatelabel för att göra etiketten översättningsbar. Flera fält ska avgränsas med ett blanksteg.stringtypetext.stringsortOrderfloatshowInDefault1 om du vill visa gruppen och 0 om du vill dölja gruppen.intshowInStore1 om du vill visa gruppen och 0 om du vill dölja gruppen.intshowInWebsite1 om du vill visa gruppen och 0 om du vill dölja gruppen.intcanRestoreintadvancedboolextendsstringGruppnodreferens
En <group>-tagg kan ha följande underordnade taggar:
labelstringfieldset_cssstringfrontend_modeltypeModelclone_modeltypeModelclone_fieldsinthelp_urltypeUrlmore_urltypeUrldemo_linktypeUrlcomment<![CDATA[//]]> kan HTML användas.stringhide_in_single_store_mode1 döljer gruppen. 0 visar gruppen.intfieldfieldgroupunboundeddepends1. Den här noden förväntar sig en section/group/field-sträng.dependsattributeattributeincludesystem_include.xsd-kompatibla filer. Används vanligen för att strukturera stora system.xml filer.includeTypemore_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:
idtypeIdtranslatelabel för att göra etiketten översättningsbar. Flera fält ska avgränsas med ett blanksteg.stringtypetext.stringsortOrderfloatshowInDefault1 om du vill visa fältet och 0 om du vill dölja fältet.intshowInStore1 om du vill visa fältet och 0 om du vill dölja fältet.intshowInWebsite1 om du vill visa fältet och 0 om du vill dölja fältet.intcanRestoreintadvancedboolextendsstringFälttypsreferens
En <field>-tagg kan ha följande värden för attributet type="":
texttextareaselectsource_model. Används även för Yes/No markeringar. Se Magento\Search\Model\Adminhtml\System\Config\Source\Engine för ett exempel.multiselectselect, men flera alternativ är giltiga.buttonMagento\ScheduledImportExport\Block\Adminhtml\System\Config\Clean för ett exempel.obscure**​**. Värdet visas inte om du ändrar typen med alternativet Inspektera element i webbläsaren.passwordobscure, förutom att det dolda värdet inte är krypterat, så visas värdet om du tvingar en ändring av typen med alternativet Inspektera element i webbläsaren.filelabeltimeallowspecificsource_model som Magento\Shipping\Model\Config\Source\Allspecificcountriesimagenotefrontend_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:
labelstringcomment<![CDATA[//]]> kan HTML användas.stringtooltipstringhintfrontend_model.stringfrontend_classstringfrontend_modeltypeModelbackend_modeltypeModelsource_modeltypeModelconfig_pathtypeConfigPathvalidatestringcan_be_emptytype är multiselect för att ange att ett fält kan vara tomt.intif_module_enabledtypeModulebase_urlupload_dir för filöverföringar.typeUrlupload_dirtypeUploadDirbutton_urlbutton_url och button_label har angetts. Används vanligtvis i kombination med en anpassad frontmodell.typeUrlbutton_labelbutton_label och button_url har angetts. Används vanligtvis i kombination med en anpassad frontmodell.stringmore_urltypeUrldemo_urltypeUrlhide_in_single_store_mode1 döljer gruppen. 0 visar gruppen.intoptionscomplexTypedepends1. Den här noden förväntar sig en section/group/field-sträng.complexTypeattributecomplexTyperequirescomplexTypemore_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\YesnocustomYes, No och Specified.Magento\Config\Model\Config\Source\EnabledisableEnable, Disable. Sparar värdena som 0 och 1 i databasen.Magento\AdminNotification\Model\Config\Source\Frequency1 Hour,2 Hours,6 Hours,12 Hours och 24 Hours. Värden sparas som heltal.Magento\Catalog\Model\Config\Source\TimeFormatMagento\Cron\Model\Config\Source\FrequencyDaily, Weekly och Monthly. Värden sparas i databasen som D, W och M.Magento\GoogleAdwords\Model\Config\Source\LanguageMagento\Config\Model\Config\Source\LocaleFä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:
alphanumericintegeripv4ipv6letters-onlyabcABC.letters-with-basic-puncMåste skicka följande uttryck:
/^[a-z\-.,()\u0027\u0022\s]+$/i.mobileUKno-marginal-whitespaceno-whitespacephoneUKphoneUSrequired-entryvalidate-no-empty).Meddelande om verifieringsfel:"Detta är ett obligatoriskt fält."
time15, 15:05 eller 15:05:48.time12h3 am, 11:30 pm, 02:15:00 pm.validate-admin-passwordvalidate-alphanum-with-spacesvalidate-clean-urlhttps://www.example.com eller www.example.com.validate-currency-dollarvalidate-dataDet 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-auvalidate-emailvalidate-emailSendervalidate-faxvalidate-no-emptyrequried-entry).Meddelande om verifieringsfel: "Tomt värde."
validate-no-html-tagsvalidate-passwordvalidate-phoneLaxvalidate-phoneStrictvalidate-selectnull-värde, ett strängvärde på none eller en stränglängd på 0.validate-ssnvalidate-streetvalidate-urlvalidate-xml-identifiervalidate-zip-usvinUSStandardvä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>