Ce n'est pas le cas.
Dans l'approche MVC de Magento, il n'est pas de la responsabilité du contrôleur de définir des variables pour la vue (dans le cas de Magento, la vue est constituée de Layout et de blocs). Les contrôleurs définissent des valeurs sur les modèles, puis les blocs lisent à partir de ces mêmes modèles. Dans la vision du monde de Magento, le fait qu'un bloc dépende du contrôleur pour faire une chose spécifique constitue un couplage étroit et doit être évité.
Le rôle de votre contrôleur est de faire certaines choses aux modèles, puis d'indiquer au système qu'il est temps d'effectuer le rendu de la mise en page. C'est tout. C'est le travail de Layout/Blocks d'afficher une page HTML d'une certaine manière en fonction de l'état des modèles du système.
Ainsi, si je voulais émuler les comportements traditionnels de PHP MVC, je devrais
-
Créer une classe de modèle simple qui hérite de Varien_Object
-
Dans le contrôleur, instanciez cet objet à l'aide de la méthode Mage::getSingleton('foo/bar')
-
Définir des valeurs sur le modèle à l'aide de la fonction magique getter/setters (vous les obtenez dans les objets qui héritent de la fonction Varien_Object
), ou setData
, etc.
-
Dans les blocs, instanciez à nouveau le modèle avec un élément Mage::getSingleton('foo/bar')
et lire les valeurs en retour.
Lorsque vous instanciez un modèle avec Mage::getSingleton(...)
Magento instanciera l'objet en tant que simple . Ainsi, si vous réinstanciez un objet (toujours avec Mage::getSingleton('foo/bar')
), vous obtenez le même objet.