Perbedaan antara <remove name = "" /> dan <action method = "unsetChild"> dalam tata letak

21

Apa perbedaan antara <action method=”unsetChild”>dan <remove name=""/>?

Kedua fungsi digunakan untuk menghapus blok dari tata letak.

Bisakah seseorang menjelaskan dengan sebuah contoh?

MeenakshiSundaram R
sumber

Jawaban:

21

<remove name="" />beroperasi dalam ruang lingkup blok global Mage_Core_Model_Layout. Ini dikumpulkan Mage_Core_Model_Layout::generateXml()dan digunakan untuk mencegah blok dengan nama yang ditentukan dari bahkan sedang dipakai . Juga, setiap blok anak menyatakan untuk <remove />blok ed akan juga tidak akan dipakai .

<action method="" />alias Mage_Core_Block_Abstract::unsetChild()adalah metode tingkat blok yang mencoret daftar blok anak yang ditunjukkan (dengan alias , bukan dengan nama ) dari instance blok induk tempat tindakan dipanggil. Ini paling sering menghasilkan blok "menghilang" dari output yang diberikan, meskipun contoh blok masih dibuat. Digunakan dalam kombinasi dengan ::append()atau ::insert()metode, digunakan untuk melakukan "langkah".

tanda batas
sumber
Hanya untuk menambah ini, jika blok tidak memiliki alias maka akan cocok dengan namanya.
Ben Crook
2
Benar, ketika tidak ada alias yang disediakan, aliasuntuk anak diatur ke name. 👍
patokan
2

<remove name="" />, Setelah selesai dengan semua tata letak, Magento akan sepenuhnya menghapus blok dengan nama yang ditunjukkan = "", terlepas dari tata letak penangannya yang mana telah ditambahkan. Menggunakan metode ini tidak mungkin untuk menghapus blok dari satu lokasi dan kemudian menambahkannya ke yang lain

<action method="unsetChild">beroperasi hanya dalam konteks di mana ia digunakan. unsetChild dibuat untuk memindahkan blok yang ada dari satu tempat ke tempat lain. Anda perlu menggunakan metode ini jika Anda ingin menghapus blok tertentu dari pegangan tata letak tertentu dan kemudian memasukkannya ke posisi lain atau pegangan tata letak.

Sohel Rana
sumber
Tidak terlalu; lihat jawaban saya untuk koreksi.
patokan