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

13

Comment est-il possible de sortir le nom du magasin actuel dans un modèle personnalisé Magento 2 avec un bloc personnalisé?

Dominik Barann
la source
quel modèle ??
Marius
modèle personnalisé utilisant un bloc personnalisé
Dominik Barann

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()

Marius
la source
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>";
?>
Alex Paliarush
la source
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

Sander Mangel
la source