Получить пользовательскую переменную 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');