Qual é a diferença entre <action method=”unsetChild”>
e <remove name=""/>
?
Ambas as funções são usadas para remover um bloco do layout.
Alguém poderia explicar com um exemplo?
<remove name="" />
opera no escopo global de blocos de Mage_Core_Model_Layout
. Eles são coletados Mage_Core_Model_Layout::generateXml()
e usados para impedir que o bloco com o nome especificado seja instanciado . Além disso, qualquer criança blocos declarados para um <remove />
bloco ed irá também não pode ser instanciado .
<action method="" />
aka Mage_Core_Block_Abstract::unsetChild()
é um método em nível de bloco que deslista o bloco filho indicado (por alias , não por nome ) da instância do bloco pai na qual a ação está sendo chamada. Isso geralmente resulta no bloco "desaparecendo" da saída renderizada, mesmo que a instância do bloco ainda seja criada. Usado em combinação com os métodos ::append()
ou ::insert()
, é usado para executar um "movimento".
alias
para um filho é definido comoname
. Ben<remove name="" />
, Quando terminar com todos os layouts, o Magento excluirá completamente o bloco com o nome indicado = "", independentemente de qual manipulador de layout foi adicionado. Usando esse método, é impossível remover um bloco de um local e adicioná-lo a outro<action method="unsetChild">
opera apenas no contexto em que está sendo usado. unsetChild é criado para mover blocos existentes de um lugar para outro. Você precisa usar esse método se desejar remover um bloco específico de uma alça de layout específica e, em seguida, insira-o em outra posição ou alça de layout.fonte