Comment obtenir le nom du magasin dans le modèle?


Réponses:


17

vous devez utiliser l'instance de \Magento\Framework\App\Config\ScopeConfigInterfacedans 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()


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
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>";
?>

Merci pour votre solution, mais je ne veux pas afficher le nom de la vue du magasin. J'ai recherché le nom du magasin de la configuration.
Dominik Barann

4

Pour obtenir une valeur de configuration de magasin comme general/store_information/namevous 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

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.