Come ottenere il nome del negozio nel modello?


Risposte:


17

devi usare l'istanza di \Magento\Framework\App\Config\ScopeConfigInterfacenel tuo blocco:

Crea il metodo getStoreName()

public function getStoreName()
{
    return $this->_scopeConfig->getValue(
        'general/store_information/name',
        \Magento\Store\Model\ScopeInterface::SCOPE_STORE
    );
}

e chiama il tuo modello echo $this->getStoreName()


I loos sono un'ottima soluzione, ma ottengo il seguente errore: Errore irreversibile: chiamata a un membro funzione dispatch () su un non oggetto in /vendor/magento/framework/View/Element/AbstractBlock.php sulla linea 637.
Dominik Barann,

cancella la cartella var / generation
Marius

1
L'approccio di @Marius è giusto, ma non ha funzionato per me. Invece ho usato \Magento\Store\Model\StoreManagerInterface $storeManager nel costruttore e public function getStoreName() { return $this->storeManager->getStore()->getName(); } posto di getName()è possibile utilizzare getCode(), getId().
Razvan,

9

Utilizzare il gestore del negozio, che contiene informazioni sul negozio attivo. Se il blocco personalizzato non è ereditato dal Templateblocco, iniettare dipendenza \Magento\Store\Model\StoreManagerInterfacenel costrutto.

<?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();
    }
}

Quindi nel modello:

<?php
/**
 * @var $block \VendorName\ModuleName\Block\CustomBlock
 */
echo "<h1>Current store name is '{$block->getCurrentStoreName()}'</h1>";
?>

Grazie per la tua soluzione, ma non voglio mostrare il nome della vista dello store. Ho cercato il nome dello store della configurazione.
Dominik Barann,

4

Per ottenere un valore di configurazione del negozio come general/store_information/nameè possibile utilizzare quanto segue

$config = new \Magento\Framework\App\Config\ScopeConfigInterface();

echo $config->getValue('general/store_information/name');

Tuttavia, farlo da un blocco o un aiutante sarebbe più pulito. Di seguito è una classe di supporto che esisterebbe nel tuo modulo personalizzato

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
        );
    }
}

Che inietteresti come dipendenza nella tua classe di blocco

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.