バックエンドにいくつかの機能を追加するMagento 2モジュールを作成しています。フロントエンドにはまったく触れません。
しかし、etc/adminhtml/di.xml
(admin diファイル)ファイルに仮想タイプを配置すると、クラスが見つからないというエラーが発生します。
同じ考え方etc/di.xml
(グローバルdiファイル)を追加すると、すべてが正しく機能します。
フォーム修飾子のような他のものは、adminhtml diファイルに追加されたときに適切に機能します。
私が理解したことから、etc/di.xml
ファイルとetc/adminhtml/di.xml
ファイルの両方がバックエンドページに読み込まれる必要があります。
どうやらこれは常に機能するとは限りません。
以下は、adminhtml diファイルで機能しないマークアップです。
<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>
繰り返しますが、私が持っているすべてのクラスはバックエンドでのみ使用されます。
私はこのエラーを受け取ります:
RuntimeException:「\ UmcConfigClassConfigMapper」生成用のソースクラス「\ UmcConfigClassConfig」が存在しません...
しかし、これはうまくいきます。
<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>
一般的di.xml
に何を配置し、特定の領域に何を配置する必要がありdi.xml
ますか?
注:キャッシュと生成フォルダーをクリアしました。