Je commence à voir de plus en plus de personnes déclarer des classes d'aides afin de pouvoir utiliser ce qui suit dans les fichiers de modèle:
$this->helper('Path/To/Helper/Class')->customMethod();
Ce type de code permet aux gens d'éviter la restriction de ne pas utiliser directement le gestionnaire d'objets, mais j'ai tendance à voir du code qui devrait être du code bloc dans ces assistants.
Donc, voici mes questions:
- que faut-il écrire dans les classes d'assistance?
- dans quels cas est-il pertinent d'utiliser des méthodes d'assistance dans les modèles?
la source
di.xml
pour le type de classe de blocs ne conserve pas une configuration de mise en page. J'ai essayé par exemple de le faire pour la classe\Magento\Catalog\Block\Product\View\Type\Simple
, le templatedefault.phtml
qui était utilisé dans notre template est ignoré. Aucune idée pourquoi pour le momentJe vois les assistants comme des fonctions globales à l'intérieur de votre module (désolé pour le mot «global»), et les gestionnaires / contrats de service comme des fonctions globales qui peuvent être utilisées aussi bien à l'intérieur qu'à l'extérieur de votre module.
Si vous suivez ce principe, vous verrez qu'il y a une utilisation minimale pour les assistants, je ne les utilise que comme wrapper de configuration dans mes modules.
Ce genre de choses. Si vous avez d'autres fonctionnalités qui pourraient être pratiques en dehors de votre module, créez plutôt un gestionnaire.
Dans un monde idéal, les développeurs tiers qui ont besoin de fonctionnalités d'autres modules ne devraient avoir qu'à chercher dans les interfaces disponibles pour les référentiels et les gestionnaires et des trucs dans le
Api
dossier.la source