En Magento 2 (casi) todos los argumentos enumerados en los archivos xml tienen un atributo xsi:type
que determina cómo se interpreta el valor del argumento.
Por ejemplo, en el di.xml
archivo del módulo de fondo hay esto:
<argument name="scopeType" xsi:type="const">Magento\Framework\App\Config\ScopeConfigInterface::SCOPE_TYPE_DEFAULT</argument>
Esto significa que el valor del argumento scopeType
es el valor de la constanteMagento\Framework\App\Config\ScopeConfigInterface::SCOPE_TYPE_DEFAULT
o este
<argument name="template" xsi:type="string">Magento_Theme::root.phtml</argument>
Esto significa que el valor del argumento template
es la cadena Magento_Theme::root.phtml
.
¿Cuáles son todos los valores posibles de este xsi:type
atributo?
static
lugar de unconst
para tal argumento? Parece que no puedo encontrar un tipo que funcione para unstatic
campo en mi clase :-(static
Respuestas:
He encontrado todos los tipos al registrar
<xs:extension base="argumentType"
archivos * .xsd.lib/internal/Magento/Framework/Data/etc/argument/types.xsd
, estos son tipos básicos :lib/internal/Magento/Framework/ObjectManager/etc/config.xsd
, se puede encontrar en di.xm l archivos:lib/internal/Magento/Framework/View/Layout/etc/elements.xsd
, se puede encontrar en los archivos de diseño * .xml :Magento/Ui/etc/ui_components.xsd
, se puede encontrar en los archivos * .xml de los componentes de la interfaz de usuario :fuente
Según mis investigaciones, esto es lo que he encontrado:
El intérprete de argumentos se crea en
lib\internal\Magento\Framework\App\ObjectManagerFactory.php
:En este código, puede ver claramente que se utilizan diferentes intérpretes según el atributo de tipo del argumento
\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
(tenga en cuenta que este toma el\Magento\Framework\Data\Argument\Interpreter\Constant
parámetro as y no el parámetro constructor)También se agrega un intérprete adicional sobre la marcha para manejar los tipos de matriz:
\Magento\Framework\Data\Argument\Interpreter\ArrayType
Nota: parece que el
init_parameter
tipo solo se usaapp\code\Magento\Store\etc\di.xml
para iniciar algunas constantes:fuente