Frage

Ich habe eine Sammlung von Händlergeschäften. Ich habe eine Funktion implementiert, die den Abstand aller Geschäfte vom Standort des Kunden berechnet, und ich habe eine Reihe von jeweiligen Entfernungen. Ich habe die Logik in der Block.php -Datei hinzugefügt.

Jetzt möchte ich, dass dieses Array aus einer Vorlagendatei zugegriffen wird. Wie implementiere ich das?

Alle Antworten, die ich aus dem Web bekomme

Jede Hilfe wäre geschätzt.

War es hilfreich?

Lösung

Die Vorlage wird im Kontext der Blockklasse gerendert. Dies bedeutet, dass Sie alle Informationen, die Sie eingeben, bedeutet $block->setMyPersonalVar($value) kann mit gelesen werden mit $this->getMyPersonalValue() In der Vorlage. Solange Sie einen Verweis auf die Blockklasse in $ block haben, können Sie jeden Wert darauf einstellen.

Dies kann in der Blockklasse selbst verwendet werden, z. B. in toHtml oder in der Controller -Klasse $this->getLayout()->getBlock('nameInLayout')->setMyPersonalValue() oder wo immer Sie wollen, zB Beobachter mit Mage::app()->getLayout()->getBlock('nameInLayout')->setMyPersonalValue()

Die Alternative ist zu verwenden Mage::register('name', $value) und Mage::registry('name')

Wenn dies nicht funktioniert, ist meine erste Vermutung: Der Code wird in der falschen Reihenfolge ausgeführt

Andere Tipps

Okay, betrachten wir ein Beispiel:

Ihre Blockdatei besteht aus der Funktion, die Ihre zurückgibt "Array", wie

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

in Ihrer config.xml

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

in App/Design/Frontend/default/your_theme/layout/there.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>
            ...

Jetzt in Ihrer Vorlage.phtml

Anruf $this->someFunction() um das Array zu bekommen.

Der Schlüssel erklärt den Block mit Ihrer Vorlagendatei in etwas.xml, so dass auf alle Mitglieder aus Ihrem Block in der Vorlage mit dem Objekt zugegriffen werden kann (mit dem Objekt ($this).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit magento.stackexchange
scroll top