Tôi đang tạo một mô-đun Magento 2 để thêm một số chức năng cho phụ trợ. Nó hoàn toàn không chạm vào frontend.
Nhưng nếu tôi đặt một số loại ảo trong etc/adminhtml/di.xml
tệp (tệp quản trị di) thì tôi gặp lỗi là không tìm thấy lớp.
Nếu tôi thêm suy nghĩ tương tự vào etc/di.xml
(tệp di toàn cầu) thì mọi thứ sẽ hoạt động bình thường.
Những thứ khác như công cụ sửa đổi biểu mẫu hoạt động đúng khi được thêm vào tập tin adminhtml.
Từ những gì tôi hiểu, cả etc/di.xml
tập tin và etc/adminhtml/di.xml
tập tin nên được tải trên các trang phụ trợ.
Rõ ràng điều này không phải lúc nào cũng hoạt động.
Đây là đánh dấu không hoạt động trong tập tin adminhtml.
<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>
Một lần nữa, tất cả các lớp tôi có chỉ được sử dụng trong phần phụ trợ.
Tôi nhận được lỗi này:
RuntimeException: Lớp nguồn "\ UmcConfigClassConfig" cho thế hệ "\ UmcConfigClassConfigMapper" không tồn tại .....
Nhưng cái này hoạt động.
<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>
Những gì nên được đặt trong chung di.xml
và những gì nên được đặt trong khu vực cụ thể di.xml
?
Lưu ý: Tôi đã xóa bộ nhớ cache và thư mục tạo.