Urutan dalam module.xml
berdampak pada app/etc/config.php
. File ini akan diperbarui ketika Anda menjalankannya bin/magento module:enable Vendor_ModuleName
jadi jika Anda telah menambahkan / mengubah urutan Saya sarankan menonaktifkan modul Anda dan kemudian mengaktifkannya kembali. Memperbarui module.xml
file dan menghapus cache tidak cukup di sini, Anda harus melakukan daur disable
ulang penuh enable
untuk membuat Magento melihat perubahan urutan selama pengembangan.
Urutan modul di config.php
file kemudian digunakan untuk semua memuat file konfigurasi lainnya sesuai komentar Anton di sini.
Lokasi kode dalam komentar itu agak ketinggalan zaman. Ini adalah kode untuk pengurutan berurutan https://github.com/magento/magento2/blob/2.0.2/lib/internal/Magento/Framework/Module/ModuleList/Loader.php#L131
Pembaruan 2:
app / etc / di.xml
<type name="Magento\Framework\View\Model\Layout\Merge">
<arguments>
<argument name="fileSource" xsi:type="object">Magento\Framework\View\Layout\File\Collector\Aggregated\Proxy</argument>
<argument name="pageLayoutFileSource" xsi:type="object">pageLayoutFileCollectorAggregated</argument>
<argument name="cache" xsi:type="object">Magento\Framework\App\Cache\Type\Layout</argument>
</arguments>
</type>
yang mereferensikan pengumpul file tata letak halaman di di.xml yang sama
<virtualType name="pageLayoutFileCollectorAggregated" type="Magento\Framework\View\Layout\File\Collector\Aggregated">
<arguments>
<argument name="baseFiles" xsi:type="object">pageLayoutFileSourceBaseSorted</argument>
<argument name="themeFiles" xsi:type="object">pageLayoutFileSourceThemeSorted</argument>
<argument name="overrideBaseFiles" xsi:type="object">pageLayoutFileSourceOverrideBaseSorted</argument>
<argument name="overrideThemeFiles" xsi:type="object">pageLayoutFileSourceOverrideThemeSorted</argument>
</arguments>
</virtualType>
yang terlihat menarik bagi kami pageLayoutFileSourceBaseSorted
masih di di.xml yang sama
<virtualType name="pageLayoutFileSourceBaseSorted" type="Magento\Framework\View\File\Collector\Decorator\ModuleDependency">
<arguments>
<argument name="subject" xsi:type="object">pageLayoutFileSourceBaseFiltered</argument>
</arguments>
</virtualType>
Magento\Framework\View\File\Collector\Decorator\ModuleDependency
melakukan penyortiran berikut
protected function getModulePriority($moduleName)
{
if ($this->orderedModules === null) {
$this->orderedModules = $this->moduleList->getNames();
}
$result = array_search($moduleName, $this->orderedModules);
// Assume unknown modules have the same priority, distinctive from known modules
if ($result === false) {
return -1;
}
return $result;
}
di mana moduleList
didasarkan pada Magento\Framework\Module\ModuleList
yang pada gilirannya menggunakan cara Loader yang disebutkan di atas.