Question

J'ai une collection de magasins Dealer. Je l'ai mis en place une fonction qui calcule la distance de tous les magasins de l'emplacement du client et j'ai un tableau de distances respectives. J'ai ajouté la logique dans le fichier Block.php.

Maintenant, je veux que ce tableau à accéder à partir d'un fichier de modèle. Comment puis-je mettre en œuvre cela?

Toutes les réponses que je reçois de web sont à l'opposé exact de ce qui est besoin - Passage de données à partir du fichier de modèle dans le fichier de bloc

Toute aide serait appréciée ..

Était-ce utile?

La solution

Le modèle est à l'intérieur du renderer contexte de classe de bloc, ce moyen toutes les informations que vous mettez dans $block->setMyPersonalVar($value) peuvent être lus avec $this->getMyPersonalValue() à l'intérieur du modèle. Donc, tant que vous avez une référence à la classe de bloc dans $ bloc, vous pouvez définir une valeur sur elle.

Ceci peut être utilisé dans la classe de bloc lui-même, par exemple en toHtml ou dans le $this->getLayout()->getBlock('nameInLayout')->setMyPersonalValue() de classe contrôleur ou partout où vous voulez, par exemple des observateurs avec Mage::app()->getLayout()->getBlock('nameInLayout')->setMyPersonalValue()

L'alternative est d'utiliser Mage::register('name', $value) et Mage::registry('name')

Si cela ne fonctionne pas ma première supposition est: Le code est exécuté dans le mauvais ordre

Autres conseils

Ok Considérons un exemple:

votre fichier bloc se compose de la fonction qui renvoie "Array" , comme

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

dans votre config.xml

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

app / design / frontend / default / votre_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>
            ...

maintenant dans votre template.phtml

$this->someFunction() d'appel pour obtenir le tableau.

la clé est le bloc avec déclarer votre fichier modèle dans something.xml, de sorte que tous les membres de votre bloc sont accessibles dans le modèle avec l'objet ($this).

Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange
scroll top