Domanda

Ho una collezione di Dealer Stores. Ho implementato una funzione che calcola la distanza di tutti i negozi dalla localizzazione del cliente e ho un array di rispettive distanze. Ho aggiunto la logica nel file di Block.php.

Ora voglio questo array a cui accedere da un file di modello. Come faccio a implementare questo?

Tutte le risposte che ricevo da web sono esatto contrario di ciò che è mancanza - Passando i dati da file modello di file del blocco

Qualsiasi aiuto sarebbe apprezzato ..

È stato utile?

Soluzione

Il modello è renderer all'interno del contesto classe di blocco, questo significa che tutte le informazioni che hai messo in $block->setMyPersonalVar($value) possono essere letti con $this->getMyPersonalValue() all'interno del template. Quindi, fino a quando si dispone di un riferimento alla classe di blocco in blocco $, è possibile impostare qualsiasi valore su di esso.

Questo può essere usato nella classe blocco stesso, ad esempio in toHtml o nel $this->getLayout()->getBlock('nameInLayout')->setMyPersonalValue() classe controller o dove vuoi, per esempio in osservatori con Mage::app()->getLayout()->getBlock('nameInLayout')->setMyPersonalValue()

L'alternativa è quella di utilizzare Mage::register('name', $value) e Mage::registry('name')

Se questo non funziona la mia prima ipotesi è: il codice viene eseguito nell'ordine sbagliato

Altri suggerimenti

Ok Consideriamo un esempio:

il file Block è costituito dalla funzione che restituisce il tuo "array" , come

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

nel tuo config.xml

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

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>
            ...

ora nel tuo template.phtml

chiamata $this->someFunction() per ottenere la matrice.

la chiave sta dichiarando il blocco con il file di modello in something.xml, in modo che tutti i membri da tuo blocco sono accessibili nel modello con l'oggetto ($this).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a magento.stackexchange
scroll top