Pregunta

Tengo una colección de tiendas de distribuidores. He implementado una función que calcula la distancia de todas las tiendas desde la ubicación del cliente y tengo una variedad de distancias respectivas. He agregado la lógica en el archivo block.php.

Ahora quiero que se acceda a esta matriz desde un archivo de plantilla. ¿Cómo implemento esto?

Todas las respuestas que obtengo de la web son exactamente opuestas de lo que es quiere: pasar datos del archivo de plantilla para bloquear el archivo

Cualquier ayuda sería apreciada..

¿Fue útil?

Solución

La plantilla es el renderizador dentro del contexto de la clase de bloque, esto significa cualquier información que haya puesto en $block->setMyPersonalVar($value) se puede leer con $this->getMyPersonalValue() Dentro de la plantilla. Entonces, siempre que tenga una referencia a la clase de bloque en $ Block, puede establecer cualquier valor.

Esto se puede usar en la clase de bloque en sí, por ejemplo, en toHtml o en la clase de controlador $this->getLayout()->getBlock('nameInLayout')->setMyPersonalValue() o donde quiera, por ejemplo, en observadores con Mage::app()->getLayout()->getBlock('nameInLayout')->setMyPersonalValue()

La alternativa es usar Mage::register('name', $value) y Mage::registry('name')

Si esto no funciona, mi primera suposición es: el código se ejecuta en el orden incorrecto

Otros consejos

Bien, consideremos un ejemplo:

Su archivo de bloque consiste en la función que devuelve tu "Formación", me gusta

public function someFunction(){
    //your logic
    return $your_array;
}

en tu config.xml

<config>
...
    <frontend>
    ...
        <layout>
            <updates>
                <yournamespace_yourmodule module="Yournamspace_YourModule">
                    <file>something.xml</file>
                </yournamespace_yourmodule>
            </updates>
         </layout>

en App/Design/Frontend/Default/Your_Theme/Layout/Something.xml

<?xml version="1.0" encoding="UTF-8"?>
    <layout version="0.1.0">
        <block_in_which_you_want_your_template>
            <reference name="parent_block_name">
                <block type="yourmodule/block_path" name="unique_name" template="path/to/your/template.phtml" /> <!-- important part of this answer -->
            </reference>
            ...

Ahora en tu plantilla.phtml

llamar $this->someFunction() Para obtener la matriz.

La clave es declarar el bloque con su archivo de plantilla en algo.xml, para que se pueda acceder a todos los miembros de su bloque en la plantilla con el objeto ($this).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a magento.stackexchange
scroll top