Ich erstelle ein Magento 2-Modul, das dem Backend einige Funktionen hinzufügt. Es berührt das Frontend überhaupt nicht.
Wenn ich jedoch einen virtuellen Typ in die etc/adminhtml/di.xml
Datei (admin di file) einfüge, wird die Fehlermeldung angezeigt, dass die Klasse nicht gefunden wurde.
Wenn ich das gleiche Denken in etc/di.xml
(die globale di-Datei) hinzufüge, funktioniert alles richtig.
Andere Dinge wie Formularmodifikatoren funktionieren ordnungsgemäß, wenn sie zur Datei adminhtml di hinzugefügt werden.
Soweit ich verstanden habe, sollten sowohl die etc/di.xml
Datei als auch die etc/adminhtml/di.xml
Datei auf die Backend-Seiten geladen werden.
Anscheinend funktioniert das nicht immer.
Hier ist das Markup, das in der Datei adminhtml di nicht funktioniert.
<virtualType name="UmcConfigClassConfigSchemaLocator" type="Umc\Base\Model\Config\SchemaLocator\SchemaLocator">
<arguments>
<argument name="fileSchema" xsi:type="string">class</argument>
<argument name="mergedSchema" xsi:type="string">class</argument>
</arguments>
</virtualType>
<virtualType name="UmcConfigClassConfigMapperFactory" type="Umc\Base\Model\Config\Mapper\Factory">
<arguments>
<argument name="typeMap" xsi:type="array" />
</arguments>
</virtualType>
<virtualType name="UmcConfigClassConfigConverter" type="Umc\Base\Model\Config\Converter\Converter">
<arguments>
<argument name="mapperFactory" xsi:type="object">UmcConfigClassConfigMapperFactory</argument>
<argument name="mapperList" xsi:type="array" />
<argument name="idNodes" xsi:type="array">
<item name="0" xsi:type="string">class</item>
</argument>
</arguments>
</virtualType>
<virtualType name="UmcConfigClassConfigReader" type="Magento\Framework\Config\Reader\Filesystem">
<arguments>
<argument name="schemaLocator" xsi:type="object">UmcConfigClassConfigSchemaLocator</argument>
<argument name="converter" xsi:type="object">UmcConfigClassConfigConverter</argument>
<argument name="fileName" xsi:type="string">class.xml</argument>
<argument name="idAttributes" xsi:type="array">
<item name="/classes/class" xsi:type="string">id</item>
</argument>
<argument name="defaultScope" xsi:type="string">umc</argument>
</arguments>
</virtualType>
<type name="Umc\Base\Model\Config\ClassConfig">
<arguments>
<argument name="reader" xsi:type="object">UmcConfigClassConfigReader</argument>
</arguments>
</type>
Auch hier werden alle Klassen, die ich habe, nur im Backend verwendet.
Ich erhalte diesen Fehler:
RuntimeException: Die Quellklasse "\ UmcConfigClassConfig" für die Generierung "\ UmcConfigClassConfigMapper" existiert nicht .....
Aber dieser funktioniert.
<virtualType name="UmcBaseUiDataProviderModuleFormModifierPool" type="Magento\Ui\DataProvider\Modifier\Pool">
<arguments>
<argument name="modifiers" xsi:type="array">
<item name="system" xsi:type="array">
<item name="class" xsi:type="string">Umc\Base\Ui\DataProvider\Module\Form\Modifier\System</item>
<item name="sortOrder" xsi:type="number">1</item>
</item>
</argument>
</arguments>
</virtualType>
<type name="Umc\Base\Ui\DataProvider\Module\Form\DataProvider">
<arguments>
<argument name="pool" xsi:type="object">UmcBaseUiDataProviderModuleFormModifierPool</argument>
</arguments>
</type>
Was sollte im Allgemeinen platziert werden di.xml
und was sollte in dem spezifischen Bereich platziert werden di.xml
?
Hinweis: Ich habe den Cache und den Generierungsordner geleert.