[Bijdrage van David Lambauer]{class="badge informative" title="David Lambauer"} [Alleen PaaS]{class="badge informative" title="Is alleen van toepassing op Adobe Commerce op Cloud-projecten (door Adobe beheerde PaaS-infrastructuur) en op projecten in het veld."}
system.xml reference
Met het bestand system.xml kunt u de Commerce-systeemconfiguratie beheren. Gebruik dit onderwerp als algemene referentie voor het system.xml bestand. Het system.xml -bestand bevindt zich onder etc/adminhtml/system.xml in een bepaalde Commerce 2-extensie.
Het volgende codefragment toont het blote skelet van het dossier:
<?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> in werking stellen.Tabs // secties // groepen // velden
In het system.xml -bestand is het mogelijk vier verschillende typen entiteiten te definiëren, die aan elkaar zijn gerelateerd. In de volgende sectie wordt de relatie beschreven tussen tabbladen, secties, groepen en velden. In de volgende schermafbeelding wordt de Commerce 2 System Configuration weergegeven in de Admin-back-end.
De rode vierkantjes geven de verschillende typen aan die in het system.xml -bestand zijn gedefinieerd:
Tabs worden gebruikt om verschillende configuratiegebieden semantisch te splitsen. Elk tabblad kan een of meer secties bevatten, die ook submenu's kunnen worden genoemd. Een sectie bevat een of meer groepen.
Elke groep geeft een of meer velden weer. U kunt ook een groep gebruiken om een algemene beschrijving toe te voegen voor de volgende velden. Zoals vermeld, kan elke groep één of meerdere gebieden hebben. Velden zijn de kleinste entiteit
in de systeemconfiguratiecontext.
Tabs
Een <tab> -tag verwijst naar een bestaand of een nieuw tabblad in de systeemconfiguratie.
Referentie tabkenmerk
Een <tab> -tag kan de volgende kenmerken hebben:
idtypeIdtranslatelabel op om het label vertaalbaar te maken.stringsortOrderfloatclassstringReferentie tabknooppunt
Een <tab> -tag kan het volgende onderliggende element hebben:
labelstringVoorbeeld: Een tabblad maken
In het volgende codefragment ziet u hoe u een nieuw tabblad maakt met voorbeeldgegevens.
<?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>
Het bovenstaande fragment maakt een nieuw tabblad met de id A_UNIQUE_ID . Terwijl het kenmerk translate wordt gedefinieerd en naar het label verwijst, is het knooppunt label vertaalbaar. Tijdens het renderingsproces wordt de CSS-klasse a-custom-css-class-to-style-this-tab toegepast op het HTML-element dat voor dit tabblad is gemaakt.
Het kenmerk sortOrder met de waarde 10 definieert de positie van de tab in de lijst met alle tabbladen wanneer deze wordt gerenderd.
Secties
Een <section> -tag verwijst naar een bestaande of een nieuwe sectie in de systeemconfiguratie.
Verwijzing naar kenmerk Sectie
Een <section> -tag kan de volgende kenmerken hebben:
idtypeIdtranslatelabel op om het label vertaalbaar te maken.stringtypetext .stringsortOrderfloatshowInDefault1 op om de sectie weer te geven en 0 om de sectie te verbergen.intshowInStore1 op om de sectie weer te geven en 0 om de sectie te verbergen.intshowInWebsite1 op om de sectie weer te geven en 0 om de sectie te verbergen.intcanRestoreintadvancedboolextendsstringVerwijzing naar knooppunt
Een <section> -tag kan de volgende onderliggende elementen hebben:
labelstringclassstringtabtypeTabIdheader_cssstringresourcetypeAclResourceIdgrouptypeGroupfrontend_modeltypeModelincludesystem_include.xsd compatibele bestanden op te nemen. Wordt meestal gebruikt om grote system.xml bestanden te structureren.includeTypeVoorbeeld: Een sectie maken en toewijzen aan een tabblad
In het volgende codefragment ziet u het basisgebruik van het maken van een nieuwe sectie.
<?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>
De sectie die hierboven wordt beschreven bepaalt identiteitskaart A_UNIQUE_SECTION_ID, is zichtbaar in het gebrek config mening en in een archiefcontext. Het knooppunt label is vertaalbaar. De sectie wordt gekoppeld aan de tab met de id A_UNIQUE_ID . De sectie kan slechts door gebruikers worden betreden die de toestemmingen hebben die in ACL VENDOR_MODULE::path_to_the_acl_resource worden bepaald.
Groepen
De tag <group> -Tag wordt gebruikt om velden samen te groeperen.
Groepskenmerkverwijzing
Een <group> -tag kan de volgende kenmerken hebben:
idtypeIdtranslatelabel op om het label vertaalbaar te maken. Meerdere velden moeten worden gescheiden door een spatie.stringtypetext .stringsortOrderfloatshowInDefault1 op om de groep weer te geven en 0 om de groep te verbergen.intshowInStore1 op om de groep weer te geven en 0 om de groep te verbergen.intshowInWebsite1 op om de groep weer te geven en 0 om de groep te verbergen.intcanRestoreintadvancedboolextendsstringReferentie van knooppunt groeperen
Een <group> -tag kan de volgende onderliggende elementen hebben:
labelstringfieldset_cssstringfrontend_modeltypeModelclone_modeltypeModelclone_fieldsinthelp_urltypeUrlmore_urltypeUrldemo_linktypeUrlcomment<![CDATA[//]]> kunt u HTML toepassen.stringhide_in_single_store_mode1 verbergt de groep; in 0 wordt de groep weergegeven.intfieldfieldgroupunboundeddepends1 heeft. Dit knooppunt verwacht een section/group/field -string.dependsattributeattributeincludesystem_include.xsd compatibele bestanden op te nemen. Wordt meestal gebruikt om grote system.xml bestanden te structureren.includeTypemore_url , demo_url en help_url worden gedefinieerd door een PayPal-frontendmodel dat slechts eenmaal wordt gebruikt. Deze knooppunten kunnen niet opnieuw worden gebruikt.Voorbeeld: een groep maken voor een bepaalde sectie
In het volgende codefragment ziet u het basisgebruik van het maken van een nieuwe groep.
<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>
De hierboven beschreven groep definieert de id A_UNIQUE_GROUP_ID , is zichtbaar in de standaardconfiguratieweergave en in een archiefcontext. Zowel label als comment zijn gemarkeerd als te vertalen.
Velden
De <field> -tag wordt gebruikt binnen <group> -tags om specifieke configuratiewaarden te definiëren.
Verwijzing veldkenmerk
Een <field> -tag kan de volgende kenmerken hebben:
idtypeIdtranslatelabel op om het label vertaalbaar te maken. Meerdere velden moeten worden gescheiden door een spatie.stringtypetext .stringsortOrderfloatshowInDefault1 op om het veld weer te geven en 0 om het veld te verbergen.intshowInStore1 op om het veld weer te geven en 0 om het veld te verbergen.intshowInWebsite1 op om het veld weer te geven en 0 om het veld te verbergen.intcanRestoreintadvancedboolextendsstringVerwijzing naar veldtype
Een <field> -tag kan de volgende waarden voor het type="" -kenmerk hebben:
texttextareaselectsource_model vereist. Wordt ook gebruikt voor Yes/No selecties. Zie Magento\Search\Model\Adminhtml\System\Config\Source\Engine voor een voorbeeld.multiselectselect maar meerdere opties zijn geldig.buttonMagento\ScheduledImportExport\Block\Adminhtml\System\Config\Clean voor een voorbeeld.obscure**​** . Als u de tekst wijzigt met 'Element controleren' in de browser, wordt de waarde niet weergegeven.passwordobscure wordt de verborgen waarde niet gecodeerd en wordt de waarde zichtbaar wanneer u het type met 'Inspect Element' in de browser forceert wijzigt.filelabeltimeallowspecificsource_model zoals Magento\Shipping\Model\Config\Source\Allspecificcountries vereistimagenotefrontend_model vereist om de notitie te renderen.Het is ook mogelijk een aangepast veldtype te maken. Dit wordt vaak gedaan wanneer een speciale knoop, met een actie, wordt vereist. Hiervoor zijn twee hoofdelementen nodig:
- Een blok maken in het gebied
adminhtml - De
type=""instellen op het pad naar dit blok
Voor het blok zelf zijn ten minste een methode __construct en een methode getElementHtml() vereist. Magento_OfflineShipping is een eenvoudig voorbeeld van een douanetype.
In de module OfflineShipping bijvoorbeeld wordt de knop Exporteren gedefinieerd in Magento\OfflineShipping\Block\Adminhtml\Form\Field\Export en ziet de velddefinitie er als volgt uit:
<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>
Referentie van veldknooppunt
Een <field> -tag kan de volgende onderliggende elementen hebben:
labelstringcomment<![CDATA[//]]> kunt u HTML toepassen.stringtooltipstringhintfrontend_model .stringfrontend_classstringfrontend_modeltypeModelbackend_modeltypeModelsource_modeltypeModelconfig_pathtypeConfigPathvalidatestringcan_be_emptytype multiselect is om op te geven dat een veld leeg kan zijn.intif_module_enabledtypeModulebase_urlupload_dir voor het uploaden van bestanden.typeUrlupload_dirtypeUploadDirbutton_urlbutton_url en button_label zijn opgegeven. Gewoonlijk gebruikt in combinatie met een aangepast frontend model.typeUrlbutton_labelbutton_label en button_url zijn opgegeven. Gewoonlijk gebruikt in combinatie met een aangepast frontend model.stringmore_urltypeUrldemo_urltypeUrlhide_in_single_store_mode1 verbergt de groep; in 0 wordt de groep weergegeven.intoptionscomplexTypedepends1 heeft. Dit knooppunt verwacht een section/group/field -string.complexTypeattributecomplexTyperequirescomplexTypemore_url, demo_url, requires en options worden gedefinieerd door een ander basisbetalingsmodel en worden slechts eenmaal gebruikt. Deze knooppunten kunnen niet opnieuw worden gebruikt.Voorbeeld: twee velden maken in een bepaalde groep
<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>
In het bovenstaande voorbeeld worden twee velden gemaakt, zowel in de standaardweergave als in de winkelweergave zichtbaar/configureerbaar. Beide velden hebben een opmerking en knopinfo waarin het doel voor de gebruiker wordt beschreven. Het knooppunt label is vertaalbaar.
Het veld met de id ANOTHER_UNIQUE_FIELD_ID is zichtbaar wanneer de opgegeven module in if_module_enabled algemeen is ingeschakeld. De waarde van het veld wordt ook gevalideerd op basis van de regels required-entry en no-whitespace .
Het veld met de id A_UNIQUE_FIELD_ID definieert een ander bronmodel dat de waarden Yes en No bevat.
Gemeenschappelijke bronmodellen
De volgende bronmodellen worden geleverd door de Commerce 2 Core. Over het algemeen zijn er veel meer bronmodellen. In de volgende lijst worden de meest voorkomende modellen beschreven. Houd er rekening mee dat voor deze bronmodellen het veldkenmerk type moet worden ingesteld op select om correct te werken.
Magento\Config\Model\Config\Source\YesnocustomYes , No en Specified op.Magento\Config\Model\Config\Source\EnabledisableEnable, Disable . Hiermee slaat u de waarden op als 0 en 1 in de database.Magento\AdminNotification\Model\Config\Source\Frequency1 Hour, 2 Hours, 6 Hours, 12 Hours en 24 Hours. Waarden worden opgeslagen als gehele getallen.Magento\Catalog\Model\Config\Source\TimeFormatMagento\Cron\Model\Config\Source\FrequencyDaily , Weekly en Monthly op. Waarden worden in de database opgeslagen als D , W en M .Magento\GoogleAdwords\Model\Config\Source\LanguageMagento\Config\Model\Config\Source\LocaleVeldvalidatie
Aan een veld kunnen een of meer validatieklassen worden toegewezen om te controleren of de invoer van de gebruiker voldoet aan de vereisten voor de extensie. Validatieregels kunnen worden toegepast met de tag <validate> -Tag.
In het volgende voorbeeld wordt een veld gevalideerd en worden verschillende validatieregels toegevoegd.
<field id="A_CUSTOM_IDENTIFIER" showInDefault="1" showInWebsite="0" showInStore="1">
<validate>required-entry validate-clean-url no-whitespace</validate>
</field>
De volgende validatieregels zijn beschikbaar:
alphanumericintegeripv4ipv6letters-onlyabcABC .letters-with-basic-puncmoet de volgende uitdrukking overgaan:
/^[a-z\-.,()\u0027\u0022\s]+$/i.mobileUKno-marginal-whitespaceno-whitespacephoneUKphoneUSrequired-entryvalidate-no-empty ).de mislukkingsbericht van de Bevestiging: "Dit is een vereist gebied."
time15 , 15:05 of 15:05:48 .time12h3 am , 11:30 pm , 02:15:00 pm .validate-admin-passwordvalidate-alphanum-with-spacesvalidate-clean-urlhttps://www.example.com of www.example.com .validate-currency-dollarvalidate-datahet eerste karakter moet een brief zijn.
(Moet uitdrukking aanpassen:
/^[A-Za-z]+[A-Za-z0-9_]+$/)de mislukkingsbericht van de Bevestiging: "Gelieve te gebruiken slechts brieven (a-z of A-Z), aantallen (0-9) of onderstrepingsteken (_) op dit gebied, en het eerste karakter zou een brief moeten zijn."
validate-date-auvalidate-emailvalidate-emailSendervalidate-faxvalidate-no-emptyrequried-entry ).de mislukkingsbericht van de Bevestiging: "Lege waarde."
validate-no-html-tagsvalidate-passwordvalidate-phoneLaxvalidate-phoneStrictvalidate-selectnull -waarde, tekenreekswaarde none of tekenreekslengte 0 heeft.validate-ssnvalidate-streetvalidate-urlvalidate-xml-identifiervalidate-zip-usvinUSStandaardwaarden
U kunt standaardwaarden voor velden instellen in het etc/config.xml -bestand van de module door de standaardwaarde in het section/group/field_ID -knooppunt op te geven.
Voorbeeld: de standaardwaarde instellen voor ANOTHER_UNIQUE_FIELD_ID (standaardbereik)
<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>
Voorbeeld: de standaardwaarde instellen voor ANOTHER_UNIQUE_FIELD_ID (bereik website)
Geef met de tag websites de standaardwaarde voor een specifieke website op.
<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>