Magento 2 - Kasing apa yang saya gunakan di.xml dan Bagaimana cara menggunakan di.xml untuk modul?

12

Di Magento 2, Kasing apa yang saya gunakan di.xmldan Bagaimana cara menggunakannya di.xmluntuk modul?

Ada yang tahu, tolong tunjukkan saya langkah demi langkah.

MrTo-Kane
sumber
2
Anda bisa mendapatkan info lebih lanjut dari situs resmi magento
Suresh Chikani

Jawaban:

53

What case We use di.xml ?

  • Kita dapat menggunakan di.xml untuk (menulis ulang) preferensi kelas tertentu.
  • Kami dapat mengirim yang baru atau mengganti argumen kelas yang ada .
  • Gunakan plugin untuk melakukan beberapa hal sebelum, sesudah, dan di sekitar fungsi
  • Dengan menggunakan virtualTypes membuat sub-kelas dari kelas lain.

Mari kita ambil contoh cepat dari modul pelanggan Magento 2.

1.Preferensi

<preference for="Magento\Customer\Api\AddressRepositoryInterface"
            type="Magento\Customer\Model\ResourceModel\AddressRepository" />

Kode di atas, Ketika seseorang meminta Anda untuk instantiate, Magento\Customer\Api\AddressRepositoryInterfaceitu akan instantiate objek Magento \ Pelanggan \ Model \ ResourceModel \ AddressRepository (atribut type).

Konfigurasi preferensi kelas bukan hanya untuk antarmuka kita dapat mengubah kelas yang sebenarnya juga.

<preference for="Magento\Customer\Model\CustomerManagement"
            type="Magento\Customer\Model\customModel" />

Anda dapat membuat kelas 'customModel' untuk 'Manajemen Pelanggan' dan melakukan perubahan. Sistem preferensi kelas sebagai pengganti sistem penulisan ulang kelas.

http://alanstorm.com/magento_2_object_manager_preferences

2. Argumen

<type name="Magento\Customer\Model\ResourceModel\Group" shared="false">
    <arguments>
        <argument name="groupManagement" xsi:type="object">Magento\Customer\Api\GroupManagementInterface\Proxy</argument>
    </arguments>
</type>

Dalam kode di atas, Kami mengirim objek sebagai argumen, kami mengatakan sistem untuk memasukkan kelas "Proxy" sebagai objek dengan nama groupManagement. Juga, kita dapat menggunakan Argumen untuk mengganti argumen yang ada juga.

http://alanstorm.com/magento_2_object_manager_argument_replacement

3. Plugin

<type name="Magento\Customer\Model\ResourceModel\Visitor">
    <plugin name="catalogLog" type="Magento\Catalog\Model\Plugin\Log" />
</type>

Dalam kode di atas, public function clean($object)di kelas pengunjung dipanggil setelah fungsi publik afterClean(Visitor $subject, $logResourceModel)yang ada di kelas Log.

4 Jenis Virtual

Membuat tipe virtual seperti membuat sub-kelas untuk kelas yang ada.

Untuk catatan lebih lanjut, silakan lihat contoh-contoh praktis yang saya sebutkan sebagai tautan dari Alan, dengan berlatih Anda bisa mendapatkan pengalaman yang lebih jelas.

Semoga ini membantu.... :)

Krishna ijjada
sumber
1
apakah Anda punya ide tentang konfigurasi yang ditetapkan dengan ifconfig di di.xml untuk mengaktifkan / menonaktifkan proses modul? jika Anda tentang hal itu tolong bantu saya menyelesaikan masalah ini.
Kartik Asodariya
Informasi yang sangat berguna.
Shivam
2
Bagaimana seseorang mempelajari semua hal ini?
Mohammed Joraid
Jadi <preferensi> alih-alih memanggil kelas dalam "untuk", ia memanggil kelas dalam "ketik" atau sesuatu? Saya masih bingung tentang ini. @@
fudu
3
oh nvm, saya menemukan jawaban yang sangat bagus di sini. inchoo.net/magento-2/overriding-classes-magento-2 :)
fudu