Frage

Ich folge Ersetzen von Objektmanagerargumenten Lernprogramm.Eine der möglichen di.xml sieht so aus

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

Was im Modell bedeutet ExampleDer Konstruktor der Klasse ersetzt den (egal alten) Wert des Arguments $scaler1 mit bar.

Bei Befehlen hingegen sieht es so aus

<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>

Das heißt, 1 neues Element (Befehl) hinzufügen CommandListKonstruktorargument commands(das vom Array-Typ ist).

Ich sehe keine Verwendung des Namens testbedCommand irgendwo im Modul.Welchen Zweck wird es haben?Soll es einzigartig sein?

War es hilfreich?

Lösung

In Magento\Framework\Console\CommandList wird kein Elementname verwendet.Wenn Sie sich diese Klasse ansehen, können Sie sehen, dass nur Werte verwendet werden, jedoch auch Array-Schlüssel verfügbar sind.

Wenn Sie in Ihrem Modul denselben Typ und denselben Argumentelementnamen definieren:

<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>

und Ihr Modul geht nach Pulsestorm utorialObjectManagerArguments, dann erhalten Sie als Argument Ihren Wert:

  <argument name="commands" xsi:type="array">
                <item name="testbedCommand" xsi:type="object">Your\Module\Command\Testbed</item>
  </argument>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit magento.stackexchange
scroll top