Cursos Magento

Passando valores para blocos via Layout XML

,

Publicado em 03 de julho de 2018

No Magento 1 falamos exaustivamente sobre Layout XML aqui no Magenteiro. Tivemos até Master Class sobre o assunto. No Magento 2 eles continuam aí, a todo vapor, nos dando toda liberdade para brincar e modificar páginas e temas com extrema flexibilidade.

Tanto no Magento 1 como no Magento 2, variáveis passadas dentro do elemento $_data de uma classe pode ser recuperado com o método mágico ->get seguido da variável. O mesmo vale para blocos em páginas html.

Como sabemos, as páginas da nossa loja são compostas por blocos (blocks). Os blocks por sua vez são formados por uma classe PHP e um arquivo de template PHTML. De forma geral, os blocos são inseridos e organizados nas páginas através de arquivos de layout XML.

Dentro do arquivo de template podemos acessar a classe PHP de nosso bloco através da variável $block (ou $this no Magento 1).

Veja no exemplo abaixo como podemos passar um valor para o nosso bloco usando apenas instruções XML:

<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <body>
        <referenceBlock name="page.main.title" remove="true"/>
        <referenceContainer name="product.info.main">
            <block name="magenteiro.teste" class="Magento\Framework\View\Element\Text" before="-">
                <action method="setText">
                    <argument name="text" xsi:type="string">Teste</argument>
                </action>
            </block>

            <block name="magenteiro.inteligente" class="Magento\Backend\Block\Template" template="Magenteiro_TemplateModule::inteligente.phtml" before="-">
                <arguments>
                    <argument name="teste" xsi:type="string">Hello World!</argument>
                </arguments>
            </block>
        </referenceContainer>
        <attribute name="class" value="hello"/>
    </body>
    <html>
        <attribute name="teste" value="hello"/>
    </html>
</page>

Note o argumento teste sendo passado como parâmetro para o nosso bloco.
Caso ainda não esteja familiarizado(a) com Magento 2, note que o handle de layout agora é especificado no próprio arquivo catalog_product_view. Desta forma, o elemento só terá o valor declarado quando exibido na página de produto. Note também que os blocos estruturais que vimos no curso de front end agora são representados por contâiners (linha 5).

Veja como recuperar o valor da variável dentro do arquivo de template phtml:

<?= $block->getTeste()?>

Com isso nosso Hello World será exibido.

Quer saber mais sobre desenvolvimento para Magento 2? Confira o curso de Magento 2 do Magenteiro.

Veja mais sobre layouts também na documentação oficial (em Inglês).

Últimos posts por Ricardo Martins (exibir todos)
Assuntos: | |
Comentários

Deixe seu comentário

[fbcomments url="https://www.magenteiro.com/blog/magento-2/passando-valores-para-blocos-via-layout-xml/"]