Получить пользовательскую переменную magento 2 в файле phtml

Я создал пользовательскую переменную из администратора magento 2 (Система> Пользовательские переменные). Мой код пользовательской переменной - "test_var".

Как я могу получить это значение в файле phtml?

5 ответов

"Чистый" способ - сделать это с помощью внедрения зависимостей.

Создайте свой собственный блок:

namespace MyCompany\MyBlockName\Block;

class MyBlock extends \Magento\Framework\View\Element\Template {

    protected $_varFactory;

    public function __construct(
        \Magento\Variable\Model\VariableFactory $varFactory,
        \Magento\Framework\View\Element\Template\Context $context)
    {
        $this->_varFactory = $varFactory;
        parent::__construct($context);
    }

    public function getVariableValue() {
        $var = $this->_varFactory->create();
        $var->loadByCode('test_var');
        return $var->getValue('text');
    }

}

И использовать его в своем .phtml файл:

<?php echo $this->getVariableValue() ?>

Для этого нужно использовать диспетчер объектов и загрузить модель, используя ее переменную Code

После этого вы можете получить его обычное значение, значение html и его имя.

 <?php 
$model = $this->_objectManager->get('Magento\Variable\Model\Variable')->loadByCode('test_var');
$plain_value = $model->getPlainValue();
$html_value = $model->getHtmlValue();
$name = $model->getName();
?>

Пожалуйста, используйте этот код:

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
    $variable = $objectManager->create('Magento\Variable\Model\Variable');

    $value = $variable->loadByCode('variableCode')->getPlainValue();
    echo $value;

Чтобы получить пользовательские переменные с учетом различных представлений магазина, можно использовать диспетчер объектов:

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$storeManager  = $objectManager->get('\Magento\Store\Model\StoreManagerInterface');
$storeID = $storeManager->getStore()->getStoreId();

// HTML VALUE
$objectManager->get('Magento\Variable\Model\Variable')->setStoreId($storeID)->loadByCode('your_custom_variable')->getHtmlValue();

// PLAIN VALUE
$objectManager->get('Magento\Variable\Model\Variable')->setStoreId($storeID)->loadByCode('your_custom_variable')->getPlainValue();

Мы в команде Stenik разработали модуль magento 2 для наших нужд, который поможет вам получить доступ к пользовательской переменной из любого шаблона phtml: Загрузить

Это работает в magento 2.2 в файле phtml:

$manager = \Magento\Framework\App\ObjectManager::getInstance();
$value = $manager
         ->get('Magento\Framework\App\DeploymentConfig')
         ->get('shop/url') // other ex: 'db/connection/default/host'
; 
// To get the TEXT value of the custom variable:
Mage::getModel('core/variable')->setStoreId(Mage::app()->getStore()->getId())->loadByCode('custom_variable_code')->getValue('text');

// To get the HTML value of the custom variable:
Mage::getModel('core/variable')->setStoreId(Mage::app()->getStore()->getId())->loadByCode('custom_variable_code')->getValue('html');
Другие вопросы по тегам