อะไรคือค่า `xsi: type` ที่อนุญาตทั้งหมดใน xml's จาก Magento2


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>

ที่นี้หมายถึงว่าค่าของอาร์กิวเมนต์เป็นสตริง templateMagento_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สามารถพบได้ในไฟล์layout * .xml :

  • " ตัวเลือก "
  • " url "
  • " ผู้ช่วย "

Magento/Ui/etc/ui_components.xsdสามารถพบได้ในไฟล์ส่วนประกอบ UI '* .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;
}

ในรหัสนี้คุณจะเห็นได้อย่างชัดเจนว่ามีการใช้ล่ามที่แตกต่างกันโดยขึ้นอยู่กับคุณลักษณะของอาร์กิวเมนต์\Magento\Framework\ObjectManager\Config\Reader\Dom::TYPE_ATTRIBUTE:

  • บูลีน =>\Magento\Framework\Data\Argument\Interpreter\Boolean
  • string =>\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 ไม่ใช่พารามิเตอร์ Constructor)

นอกจากนี้ยังมีการเพิ่มล่ามพิเศษในการจัดการประเภทอาร์เรย์:

  • array =>\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.