Comprendre le remplacement des arguments du gestionnaire d'objets à l'aide de di.xml pour les commandes

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

  •  28-09-2020
  •  | 
  •  

Question

je suis remplacement des arguments du gestionnaire d'objets Didacticiel.L'un des di.xml possibles ressemble à

<type name="Pulsestorm\TutorialObjectManagerArguments\Model\Example">
    <arguments>
        <argument name="scaler1" xsi:type="string">bar</argument>
    </arguments>
</type>

Ce qui signifie dans le modèle ExampleLe constructeur de la classe, remplace la valeur (quelle qu'elle soit) de l'argument $scaler1 avec bar.

Alors que pour les commandes, cela ressemble à

<type name="Magento\Framework\Console\CommandList">
    <arguments>
        <argument name="commands" xsi:type="array">
            <item name="testbedCommand" xsi:type="object">Pulsestorm\TutorialObjectManagerArguments\Command\Testbed</item>
        </argument>
    </arguments>
</type>

Ce qui dit d'ajouter 1 nouvel élément (commande) dans CommandListL'argument constructeur de commands(qui est de type tableau).

Je ne vois pas l'utilité du nom testbedCommand n'importe où dans le module.Quelle sera son utilité ?Doit-il être unique ?

Était-ce utile?

La solution

Un nom d'élément n'est pas utilisé dans Magento\Framework\Console\CommandList.Si vous examinez cette classe, vous pouvez voir que seules les valeurs sont utilisées, mais que les clés du tableau sont également disponibles.

Si vous définissez dans votre module le même type et avec le même nom d'élément d'argument :

<type name="Magento\Framework\Console\CommandList">
    <arguments>
        <argument name="commands" xsi:type="array">
            <item name="testbedCommand" xsi:type="object">Your\Module\Command\Testbed</item>
        </argument>
    </arguments>
</type>

et votre module va après Pulsestorm utorialObjectManagerArguments, puis comme argument vous obtiendrez votre valeur :

  <argument name="commands" xsi:type="array">
                <item name="testbedCommand" xsi:type="object">Your\Module\Command\Testbed</item>
  </argument>
Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange
scroll top