Dans Magento 2 (presque) tous les arguments répertoriés dans les fichiers xml ont un attribut xsi:type
qui détermine comment la valeur de l'argument est interprétée.
Par exemple, dans le di.xml
fichier du module backend il y a ceci:
<argument name="scopeType" xsi:type="const">Magento\Framework\App\Config\ScopeConfigInterface::SCOPE_TYPE_DEFAULT</argument>
cela signifie que la valeur de l'argument scopeType
est la valeur de la constanteMagento\Framework\App\Config\ScopeConfigInterface::SCOPE_TYPE_DEFAULT
ou celui-ci
<argument name="template" xsi:type="string">Magento_Theme::root.phtml</argument>
cela signifie que la valeur de l'argument template
est la chaîne Magento_Theme::root.phtml
.
Quelles sont toutes les valeurs possibles de cet xsi:type
attribut?
static
au lieu d'unconst
pour un tel argument? Je n'arrive pas à trouver un type qui fonctionne pour unstatic
champ dans ma classe :-(static
Réponses:
J'ai trouvé tous les types
<xs:extension base="argumentType"
en archivant les fichiers * .xsd.lib/internal/Magento/Framework/Data/etc/argument/types.xsd
, ce sont des types de base :lib/internal/Magento/Framework/ObjectManager/etc/config.xsd
, peut être trouvé dans les fichiers di.xm l:lib/internal/Magento/Framework/View/Layout/etc/elements.xsd
, se trouve dans les fichiers layout * .xml :Magento/Ui/etc/ui_components.xsd
, se trouve dans les fichiers * .xml des composants de l'interface utilisateur :la source
D'après mes recherches, voici ce que j'ai trouvé:
L'interpréteur d'arguments est créé dans
lib\internal\Magento\Framework\App\ObjectManagerFactory.php
:Dans ce code, vous pouvez clairement voir que différents interprètes sont utilisés en fonction de l'attribut type de l'argument
\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
(notez que celui-ci prend le\Magento\Framework\Data\Argument\Interpreter\Constant
paramètre as et non le paramètre constructeur)Un interpréteur supplémentaire est également ajouté à la volée pour gérer les types de tableaux:
\Magento\Framework\Data\Argument\Interpreter\ArrayType
Remarque: il semble que le
init_parameter
type ne soit utilisé que dansapp\code\Magento\Store\etc\di.xml
pour lancer certaines constantes:la source