In Magento 2 haben (fast) alle in XML-Dateien aufgelisteten Argumente ein Attribut xsi:type
, das bestimmt, wie der Wert des Arguments interpretiert wird.
In der di.xml
Datei des Backend-Moduls gibt es zum Beispiel Folgendes:
<argument name="scopeType" xsi:type="const">Magento\Framework\App\Config\ScopeConfigInterface::SCOPE_TYPE_DEFAULT</argument>
Dies bedeutet, dass der Wert des Arguments scopeType
der Wert der Konstante istMagento\Framework\App\Config\ScopeConfigInterface::SCOPE_TYPE_DEFAULT
oder dieses
<argument name="template" xsi:type="string">Magento_Theme::root.phtml</argument>
Dies bedeutet, dass der Wert des Arguments template
die Zeichenfolge ist Magento_Theme::root.phtml
.
Was sind alle möglichen Werte dieses xsi:type
Attributs?
static
anstelle von aconst
für ein solches Argument zu verwenden? Ich kann anscheinend keinen Typ finden, der für einstatic
Feld in meiner Klasse funktioniert :-(static
Antworten:
Ich habe alle Typen gefunden, indem ich
<xs:extension base="argumentType"
* .xsd-Dateien eingecheckt habe.lib/internal/Magento/Framework/Data/etc/argument/types.xsd
Dies sind Basistypen :lib/internal/Magento/Framework/ObjectManager/etc/config.xsd
, finden Sie in den Dateien von di.xm l:lib/internal/Magento/Framework/View/Layout/etc/elements.xsd
finden Sie in Layout * .xml- Dateien:Magento/Ui/etc/ui_components.xsd
finden Sie in den * .xml- Dateien der UI-Komponenten :quelle
Nach meinen Recherchen habe ich Folgendes gefunden:
Das Argument Interpreter wird erstellt in
lib\internal\Magento\Framework\App\ObjectManagerFactory.php
:In diesem Code können Sie deutlich sehen, dass unterschiedliche Interpreter basierend auf dem type-Attribut des Arguments verwendet werden
\Magento\Framework\ObjectManager\Config\Reader\Dom::TYPE_ATTRIBUTE
:\Magento\Framework\Data\Argument\Interpreter\Boolean
\Magento\Framework\Data\Argument\Interpreter\StringUtils
\Magento\Framework\Data\Argument\Interpreter\Number
\Magento\Framework\Data\Argument\Interpreter\NullType
\Magento\Framework\Data\Argument\Interpreter\DataObject
\Magento\Framework\Data\Argument\Interpreter\Constant
\Magento\Framework\App\Arguments\ArgumentInterpreter
(beachte, dass dies der\Magento\Framework\Data\Argument\Interpreter\Constant
as-Parameter ist und nicht der Konstruktor-Parameter)Es wird auch ein zusätzlicher Interpreter hinzugefügt, um Array-Typen zu handhaben:
\Magento\Framework\Data\Argument\Interpreter\ArrayType
Hinweis: Der
init_parameter
Typ wird anscheinend nurapp\code\Magento\Store\etc\di.xml
zum Initiieren einiger Konstanten verwendet:quelle