템플릿에서 상점 이름을 얻는 방법은 무엇입니까?


답변:


17

\Magento\Framework\App\Config\ScopeConfigInterface블록에서 인스턴스를 사용해야합니다 .

메소드 작성 getStoreName()

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

템플릿을 불러 echo $this->getStoreName()


훌륭한 솔루션처럼 느슨하지만 다음과 같은 오류가 발생합니다. 치명적인 오류 : 637 행의 /vendor/magento/framework/View/Element/AbstractBlock.php에있는 객체가 아닌 멤버의 dispatch () 멤버 함수를 호출하십시오.
Dominik Barann

var / generation 폴더 지우기
Marius

1
@Marius의 접근 방식은 맞지만 나에게는 효과가 없었습니다. 대신에 내가 사용한 적이 \Magento\Store\Model\StoreManagerInterface $storeManager 생성자와 public function getStoreName() { return $this->storeManager->getStore()->getName(); } 대신에 getName()사용할 수있는 getCode(), getId().
Razvan

9

활성 상점에 대한 정보를 보유하는 상점 관리자를 사용하십시오. 커스텀 블록이 Template블록에서 상속되지 않으면 \Magento\Store\Model\StoreManagerInterface구문에 의존성을 주입하십시오 .

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

그런 다음 템플릿에서 :

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

솔루션에 대해 감사하지만 상점보기 이름을 표시하고 싶지 않습니다. 구성의 상점 이름을 검색했습니다.
Dominik Barann

4

상점 구성 값을 얻으려면 general/store_information/name다음을 사용할 수 있습니다.

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

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

그러나 블록이나 도우미 에서이 작업을 수행하면 더 깨끗합니다. 다음은 사용자 정의 모듈에 존재하는 도우미 클래스입니다.

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

블록 클래스에 의존성으로 주입 할 것

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.