Certificação Magento – Estrutura de Blocos nos Templates – Parte 1

Desenvolvedores novos em Magento muitas vezes confundem Layout e View.

Este artigo vai abordar Layout e Bloco no Magento, e mostrar-lhe como ele se encaixa na estrutura Magento MVC.

Ao contrário de muitos sistemas MVC populares, Action Controller do Magento não passa de um objeto de dados para as propriedades da vista ou conjunto sobre o objeto de exibição (com algumas exceções).

Em vez disso, a exibição do componente diretamente modelos de sistema de referências para obter as informações de que necessita para exibição.

magento-certificacao-imagem-01

Uma consequência desta decisão de projeto é que a exibição passa a ser dividida em blocos e modelos.

Blocos são objetos PHP, Templates são arquivos “raw” PHP (com uma extensão .phtml) que contêm uma mistura de HTML e PHP (onde PHP é usada como uma linguagem de templates).

Cada bloco é vinculado a um único arquivo de modelo. Dentro de um arquivo phtml, do PHP $ this-chave irá conter uma referência ao objeto do bloco do modelo que deve ser referenciado em um arquivo layout.xml

Um exemplo rápido

Dê uma olhada no modelo de produto padrão para o arquivo de

app / design / frontend / base / default / template / catalog / product / list.phtml
Você verá o seguinte código PHP.
getLoadedProductCollection () ?>
count ()): ?> < div class= “note-msg” >
__ ( “There are no products matching the selection.” ) ?>


O método getLoadedProductCollection pode ser encontrado no bloco com a classe, Mage_Catalog_Block_Product_List imediata:
Arquivo: app / code / core / Mago / Catalog / Block / Product / list.php

public function getLoadedProductCollection ()
{
return $this -> _getProductCollection ();
}

_getProductCollection Do bloco instancia modelos e lê os seus dados, retornando um resultado para o modelo.

Blocos de notificação

O verdadeiro poder de Blocosb está no método getChildHtml.

Isso permite que você incluir o conteúdo de um bloco secundário dentro de um bloco primário.

Arquivo: app / design / frontend / base / default / template / page / one-column.phtml

< html xmlns = “http://www.w3.org/1999/xhtml” xml : lang = “?php echo $this->getLang() ?>” lang = “getLang() ?>” >
< head >
getChildHtml ( ‘head’ ) ?>

< body class= “page-popup getBodyClass()?$this->getBodyClass():” ?>” >
getChildHtml ( ‘content’ ) ?>
getChildHtml ( ‘before_body_end’ ) ?>
getAbsoluteFooter () ?>

O modelo em si é apenas 11 linhas.

No entanto, cada chamada para $ this-> getChildHtml (…) vai incluir e tornar outro Block.

Estes blocos, por sua vez, utilizarão getChildHtml para processar outros blocos.

É Blocos de todo o caminho e por aí vai.

Espero que tenham gostado até a próxima.

2017-01-24T20:25:07+00:00

RECEBA DICAS VALIOSAS NO SEU EMAIL

x