Comment est-il possible de sortir le nom du magasin actuel dans un modèle personnalisé Magento 2 avec un bloc personnalisé?
Comment est-il possible de sortir le nom du magasin actuel dans un modèle personnalisé Magento 2 avec un bloc personnalisé?
Réponses:
vous devez utiliser l'instance de \Magento\Framework\App\Config\ScopeConfigInterface
dans votre bloc:
Créer la méthode getStoreName()
public function getStoreName()
{
return $this->_scopeConfig->getValue(
'general/store_information/name',
\Magento\Store\Model\ScopeInterface::SCOPE_STORE
);
}
et appelez dans votre modèle echo $this->getStoreName()
\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()
.
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.
<?php
namespace VendorName\ModuleName\Block;
class CustomBlock extends \Magento\Framework\View\Element\Template
{
/**
* Get current store name.
*
* @return string
*/
public function 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>";
?>
Pour obtenir une valeur de configuration de magasin comme general/store_information/name
vous pouvez utiliser ce qui suit
$config = new \Magento\Framework\App\Config\ScopeConfigInterface();
echo $config->getValue('general/store_information/name');
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;
class Data extends \Magento\Framework\App\Helper\AbstractHelper
{
/**
* Retrieve store name
*
* @return string|null
*/
public function 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