2012-01-18 15 views
17

Quiero saber las diferencias entre estas dos funciones. Entiendo el comportamiento de getChildHtml(). Devuelve el html del bloque o todos los bloques si no pasas ningún parámetro. Y puedo verdiferencia entre getChildHtml() y getChildChildHtml() en Magento

getChildHtml($name, $useCache, $sorted) 
getChildChildHtml($name, $childName,$useCache, $sorted) 

a primera vista que un parámetro $ useCache que suposed es utilizar la memoria caché.

Respuesta

41

Digamos que usted está en archivo de plantilla phtml del bloque de raíz, y tiene una estructura de bloques simplificado que tiene este aspecto

root 
    left 
     promo_top 
     navigation 
     promo_bottom 
    center 
    right 

De archivo de plantilla de bloque de raíz, para imprimir el bloque de la izquierda se había use getChildHtml.

echo $this->getChildHtml('left'); 

Sin embargo, si por alguna razón usted desea imprimir el bloque promo_top en la plantilla de la raíz, que tendría que hacer algo como esto

$left = $this->getChildBlock('left') 
echo $left->getChildHtml('promo_top') 

El método getChildChildHtml le permite hacer este tipo de cosas en una llamada de método simple. Una vez más, de la plantilla de la raíz

echo $this->getChildChildHtml('left','promo_top'); 

Por lo tanto, la semántica es

  1. Obtener mi bloque Niño con el nombre X
  2. A continuación, obtener es bloque de niño con la Y
  3. Render el HTML

Si mira el código fuente puede verlo, u ltimately, este método solo se envuelve una llamada a getChildHtml

#File: app/code/core/Mage/Core/Block/Abstract.php 
public function getChildChildHtml($name, $childName = '', $useCache = true, $sorted = false) 
{ 
    if (empty($name)) { 
     return ''; 
    } 
    $child = $this->getChild($name); 
    if (!$child) { 
     return ''; 
    } 
    return $child->getChildHtml($childName, $useCache, $sorted); 
} 
+2

muy útil para mí, gracias Alan – davidselo

+1

explicación impresionante. Gracias Alan. – RIK

Cuestiones relacionadas