ما هي جميع قيم `xsi:type` المسموح بها في ملف XML من Magento2

magento.stackexchange https://magento.stackexchange.com/questions/103606

  •  29-09-2020
  •  | 
  •  

سؤال

في 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 يصف؟

هل كانت مفيدة؟

المحلول

لقد وجدت جميع الأنواع عن طريق التحقق <xs:extension base="argumentType" في ملفات *.xsd.

lib/internal/Magento/Framework/Data/etc/argument/types.xsd, ، هؤلاء هم أنواع القاعدة:

  • "مجموعة مصفوفة"
  • "خيط"
  • "منطقية"
  • "هدف"
  • "configurableObject"
  • "رقم"
  • "باطل"

lib/internal/Magento/Framework/ObjectManager/etc/config.xsd, ، يمكن العثور عليها في di.xmل الملفات:

  • "هدف"
  • "init_parameter"
  • "مقدار ثابت"

lib/internal/Magento/Framework/View/Layout/etc/elements.xsd, ، يمكن العثور عليها في التخطيط *.xml الملفات:

  • "خيارات"
  • "عنوان URL"
  • "المساعد"

Magento/Ui/etc/ui_components.xsd, ، يمكن العثور عليها في مكونات واجهة المستخدم *.xml الملفات:

  • "ثابت"
  • "عنوان URL"

نصائح أخرى

وفقا لأبحاثي، إليك ما وجدته:

يتم إنشاء مترجم الوسيطة في 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
  • خيط => \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
  • init_parameter => \Magento\Framework\App\Arguments\ArgumentInterpreter (لاحظ أن هذا يأخذ \Magento\Framework\Data\Argument\Interpreter\Constant كمعلمة وليس معلمة المنشئ)

تتم أيضًا إضافة مترجم إضافي سريعًا للتعامل مع أنواع المصفوفات:

  • مجموعة مصفوفة => \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>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى magento.stackexchange
scroll top