ما هي جميع قيم `xsi:type` المسموح بها في ملف XML من Magento2
سؤال
في 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>