Différence entre <remove name = ”" /> et <action method = "unsetChild"> dans la présentation


21

Quelle est la difference entre <action method=”unsetChild”>et <remove name=""/>?

Les deux fonctions sont utilisées pour supprimer un bloc de la présentation.

Quelqu'un pourrait-il expliquer avec un exemple?

Réponses:


21

<remove name="" />opère dans la portée globale des blocs de Mage_Core_Model_Layout. Ceux-ci sont collectés Mage_Core_Model_Layout::generateXml()et utilisés pour empêcher l' instanciation du bloc portant le nom spécifié . En outre, tous les blocs enfants déclarés pour un <remove />bloc ed sera également pas instanciés .

<action method="" />aka Mage_Core_Block_Abstract::unsetChild()est une méthode au niveau du bloc qui supprime le bloc enfant indiqué (par alias , pas par nom ) de l'instance de bloc parent sur laquelle l'action est appelée. Le plus souvent, le bloc «disparaît» de la sortie rendue, même si l'instance de bloc est toujours créée. Utilisé en combinaison avec les méthodes ::append()ou ::insert(), il est utilisé pour effectuer un "déplacement".


Juste pour ajouter à cela, si le bloc n'a pas d'alias, il correspondra au nom.
Ben Crook

2
Correct, lorsqu'aucun alias n'est fourni, le aliaspour un enfant est défini sur son name. 👍
benmarks

2

<remove name="" />, Une fois toutes les mises en page terminées, Magento supprimera complètement le bloc portant le nom indiqué = "", quelle que soit la poignée de mise en page à laquelle il a été ajouté. En utilisant cette méthode, il est impossible de supprimer un bloc d'un emplacement, puis de l'ajouter à un autre

<action method="unsetChild">ne fonctionne que dans le contexte où il est utilisé. unsetChild est créé pour déplacer des blocs existants d'un endroit à un autre. Vous devez utiliser cette méthode si vous souhaitez supprimer un bloc spécifique d'une poignée de présentation spécifique, puis l'insérer dans une autre position ou poignée de présentation.


Pas assez; voir ma réponse pour les corrections.
benmarks
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.