Magento2'den xml'lerde izin verilen tüm xsi: type` değerleri nelerdir?


20

Magento 2'de (neredeyse) xml dosyalarında listelenen tüm bağımsız değişkenlerin xsi:type, bağımsız değişkenin değerinin nasıl yorumlandığını belirleyen bir özniteliği vardır.
Örneğin di.xml, arka uç modülünün dosyasında şunlar vardır:

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

Bu, argümanın scopeTypedeğerinin sabitin değeri olduğu anlamına gelir.Magento\Framework\App\Config\ScopeConfigInterface::SCOPE_TYPE_DEFAULT

ya da bu

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

Bu, bağımsız değişkenin değerinin templatedize olduğu anlamına gelir Magento_Theme::root.phtml.

Bu xsi:typeözelliğin olası değerleri nelerdir?


Hiç böyle bir argüman için bir staticyerine bir kullanmayı denediniz constmi? static
Sınıfımdaki

Hayýr. Yapmadým. Ben bile destek olduğunu sanmıyorumstatic
Marius

Yanıtlar:


36

<xs:extension base="argumentType"* .Xsd dosyalarını kontrol ederek tüm türleri buldum .

lib/internal/Magento/Framework/Data/etc/argument/types.xsd, bunlar temel türlerdir :

  • " dizi "
  • " string "
  • " boole "
  • " nesne "
  • " configurableObject "
  • " sayı "
  • " null "

lib/internal/Magento/Framework/ObjectManager/etc/config.xsd, di.xm l dosyalarında bulunabilir:

  • " nesne "
  • " init_parametre "
  • " sabit "

lib/internal/Magento/Framework/View/Layout/etc/elements.xsd, düzen * .xml dosyalarında bulunabilir:

  • " seçenekler "
  • " url "
  • " yardımcı "

Magento/Ui/etc/ui_components.xsd, UI bileşenleri '* .xml dosyalarında bulunabilir:

  • " sabit "
  • " url "

14

Araştırmalarıma göre, bulduğum şey:

Bağımsız değişken yorumlayıcısı şunlarda oluşturulur 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;
}

Bu kodda, bağımsız değişkenin type özniteliğine dayalı olarak farklı tercümanların kullanıldığını açıkça görebilirsiniz \Magento\Framework\ObjectManager\Config\Reader\Dom::TYPE_ATTRIBUTE:

  • boolean =>\Magento\Framework\Data\Argument\Interpreter\Boolean
  • string =>\Magento\Framework\Data\Argument\Interpreter\StringUtils
  • sayı =>\Magento\Framework\Data\Argument\Interpreter\Number
  • null =>\Magento\Framework\Data\Argument\Interpreter\NullType
  • object =>\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\Constantbunun parametrenin yapıcı parametresini değil, as parametresini aldığını unutmayın )

Ayrıca dizi türlerini işlemek için anında ek bir yorumlayıcı eklenir:

  • dizi =>\Magento\Framework\Data\Argument\Interpreter\ArrayType

Not: Görünüşe göre init_parametertür yalnızca app\code\Magento\Store\etc\di.xmlbazı sabitleri başlatmak için kullanılır :

<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>
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.