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속성 의 가능한 모든 값은 무엇입니까 ?


그런 주장을 static대신 하여 대신 사용해 보셨습니까 const? 나는 작동 유형 찾을 수 없습니다 static:-( 내 수업에 필드
peedee

아뇨. 나는 지원조차 없다고 생각한다static
Marius

답변:


36

<xs:extension base="argumentType"* .xsd 파일 을 체크인 하여 모든 유형을 찾았습니다 .

lib/internal/Magento/Framework/Data/etc/argument/types.xsd기본 유형 은 다음과 같습니다 .

  • " 배열 "
  • " 문자열 "
  • " 부울 "
  • " 객체 "
  • " configurableObject "
  • " 번호 "
  • " null "

lib/internal/Magento/Framework/ObjectManager/etc/config.xsd, di.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.