Magento2のxmlで許可されるすべての `xsi:type`値は何ですか


20

Magento 2(ほとんど)では、xmlファイルにリストされているすべての引数にxsi:typeは、引数の値がどのように解釈されるかを決定する属性があります。
たとえばdi.xml、バックエンドモジュールのファイルには以下があります。

<argument name="scopeType" xsi:type="const">Magento\Framework\App\Config\ScopeConfigInterface::SCOPE_TYPE_DEFAULT</argument>

これは、引数scopeTypeの値が定数の値であることを意味しますMagento\Framework\App\Config\ScopeConfigInterface::SCOPE_TYPE_DEFAULT

またはこれ

<argument name="template" xsi:type="string">Magento_Theme::root.phtml</argument>

これは、引数の値がtemplate文字列であることを意味しますMagento_Theme::root.phtml

このxsi:type属性のすべての可能な値は何ですか?


そのような議論のためにaのstatic代わりにa を使用しようとしたことconstがありますか?staticクラス内のフィールドに
有効な

いいえ、しませんでした。私もサポートのためにそこにあるとは思わないstatic
マリウス

回答:


36

<xs:extension base="argumentType"* .xsdファイルをチェックインすると、すべてのタイプが見つかりました。

lib/internal/Magento/Framework/Data/etc/argument/types.xsd、これらは基本タイプです:

  • 配列
  • 文字列
  • ブール
  • オブジェクト
  • configurableObject
  • 番号
  • null

lib/internal/Magento/Framework/ObjectManager/etc/config.xsddi.xm lファイルにあります。

  • オブジェクト
  • init_parameter
  • const

lib/internal/Magento/Framework/View/Layout/etc/elements.xsdレイアウト* .xmlファイルにあります:

  • オプション
  • url
  • ヘルパー

Magento/Ui/etc/ui_components.xsdUIコンポーネントの* .xmlファイルにあります:

  • 定数
  • url

14

私の研究によれば、私が見つけたものは次のとおりです。

引数インタープリターは以下で作成されますlib\internal\Magento\Framework\App\ObjectManagerFactory.php

protected function createArgumentInterpreter(
    \Magento\Framework\Stdlib\BooleanUtils $booleanUtils
) {
    $constInterpreter = new \Magento\Framework\Data\Argument\Interpreter\Constant();
    $result = new \Magento\Framework\Data\Argument\Interpreter\Composite(
        [
            'boolean' => new \Magento\Framework\Data\Argument\Interpreter\Boolean($booleanUtils),
            'string' => new \Magento\Framework\Data\Argument\Interpreter\StringUtils($booleanUtils),
            'number' => new \Magento\Framework\Data\Argument\Interpreter\Number(),
            'null' => new \Magento\Framework\Data\Argument\Interpreter\NullType(),
            'object' => new \Magento\Framework\Data\Argument\Interpreter\DataObject($booleanUtils),
            'const' => $constInterpreter,
            'init_parameter' => new \Magento\Framework\App\Arguments\ArgumentInterpreter($constInterpreter),
        ],
        \Magento\Framework\ObjectManager\Config\Reader\Dom::TYPE_ATTRIBUTE
    );
    // Add interpreters that reference the composite
    $result->addInterpreter('array', new \Magento\Framework\Data\Argument\Interpreter\ArrayType($result));
    return $result;
}

このコードでは、引数のtype属性に基づいて異なるインタープリターが使用されていることが明確にわかります\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
  • null =>\Magento\Framework\Data\Argument\Interpreter\NullType
  • オブジェクト =>\Magento\Framework\Data\Argument\Interpreter\DataObject
  • const =>\Magento\Framework\Data\Argument\Interpreter\Constant
  • init_parameter => \Magento\Framework\App\Arguments\ArgumentInterpreter(この\Magento\Framework\Data\Argument\Interpreter\Constantパラメーターはコンストラクターパラメーターではなくasパラメーターを取ることに注意してください)

また、配列タイプを処理するために追加のインタープリターがオンザフライで追加されます。

  • 配列 =>\Magento\Framework\Data\Argument\Interpreter\ArrayType

注:init_parameter型は、app\code\Magento\Store\etc\di.xmlいくつかの定数を開始するためにのみ使用されるようです:

<argument name="xFrameOpt" xsi:type="init_parameter">Magento\Framework\App\Response\XFrameOptPlugin::DEPLOYMENT_CONFIG_X_FRAME_OPT</argument>
...
<argument name="isCustomEntryPoint" xsi:type="init_parameter">Magento\Store\Model\Store::CUSTOM_ENTRY_POINT_PARAM</argument>
...
<argument name="runMode" xsi:type="init_parameter">Magento\Store\Model\StoreManager::PARAM_RUN_TYPE</argument>
<argument name="scopeCode" xsi:type="init_parameter">Magento\Store\Model\StoreManager::PARAM_RUN_CODE</argument>
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.