Loos comme une excellente solution, mais j'obtiens l'erreur suivante: Erreur fatale: appel à une fonction membre dispatch () sur un non-objet dans /vendor/magento/framework/View/Element/AbstractBlock.php sur la ligne 637.
Dominik Barann
effacer le dossier var / generation
Marius
1
L'approche de @Marius est juste, mais cela n'a pas fonctionné pour moi. Au lieu de cela , je l' ai utilisé \Magento\Store\Model\StoreManagerInterface $storeManager dans le constructeur et au public function getStoreName() { return $this->storeManager->getStore()->getName(); } lieu de getName()vous pouvez utiliser getCode(), getId().
Razvan
9
Utilisez le gestionnaire de magasin, qui contient des informations sur le magasin actif. Si le bloc personnalisé n'est pas hérité du Templatebloc, injectez la dépendance dans \Magento\Store\Model\StoreManagerInterfacedans la construction.
<?php
namespaceVendorName\ModuleName\Block;classCustomBlockextends \Magento\Framework\View\Element\Template
{/**
* Get current store name.
*
* @return string
*/publicfunction getCurrentStoreName(){return $this->_storeManager->getStore()->getName();}}
Puis dans le modèle:
<?php
/**
* @var $block \VendorName\ModuleName\Block\CustomBlock
*/
echo "<h1>Current store name is '{$block->getCurrentStoreName()}'</h1>";?>
Cependant, le faire à partir d'un bloc ou d'une aide serait plus propre. Vous trouverez ci-dessous une classe d'assistance qui existerait dans votre propre module personnalisé
namespace[Namespace]\[Module]\Helper;classDataextends \Magento\Framework\App\Helper\AbstractHelper
{/**
* Retrieve store name
*
* @return string|null
*/publicfunction getStoreName(){return $this->scopeConfig->getValue('general/store_information/name',
\Magento\Store\Model\ScopeInterface::SCOPE_STORE
);}}
Que vous injecteriez comme dépendance dans votre classe de bloc
Réponses:
vous devez utiliser l'instance de
\Magento\Framework\App\Config\ScopeConfigInterface
dans votre bloc:Créer la méthode
getStoreName()
et appelez dans votre modèle
echo $this->getStoreName()
la source
\Magento\Store\Model\StoreManagerInterface $storeManager
dans le constructeur et aupublic function getStoreName() { return $this->storeManager->getStore()->getName(); }
lieu degetName()
vous pouvez utilisergetCode()
,getId()
.Utilisez le gestionnaire de magasin, qui contient des informations sur le magasin actif. Si le bloc personnalisé n'est pas hérité du
Template
bloc, injectez la dépendance dans\Magento\Store\Model\StoreManagerInterface
dans la construction.Puis dans le modèle:
la source
Pour obtenir une valeur de configuration de magasin comme
general/store_information/name
vous pouvez utiliser ce qui suitCependant, le faire à partir d'un bloc ou d'une aide serait plus propre. Vous trouverez ci-dessous une classe d'assistance qui existerait dans votre propre module personnalisé
Que vous injecteriez comme dépendance dans votre classe de bloc
la source