Come è possibile produrre il nome del negozio corrente in un modello personalizzato Magento 2 con un blocco personalizzato?
Come è possibile produrre il nome del negozio corrente in un modello personalizzato Magento 2 con un blocco personalizzato?
Risposte:
devi usare l'istanza di \Magento\Framework\App\Config\ScopeConfigInterface
nel 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()
\Magento\Store\Model\StoreManagerInterface $storeManager
nel costruttore e public function getStoreName() { return $this->storeManager->getStore()->getName(); }
posto di getName()
è possibile utilizzare getCode()
, getId()
.
Utilizzare il gestore del negozio, che contiene informazioni sul negozio attivo. Se il blocco personalizzato non è ereditato dal Template
blocco, iniettare dipendenza \Magento\Store\Model\StoreManagerInterface
nel 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>";
?>
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