Я создал пользовательскую переменную из magento 2 admin (System> Custom Variables). Мой пользовательский код переменной - «test_var».Получить переменную magento 2 в файле phtml
Как я могу получить это значение в файле phtml?
Я создал пользовательскую переменную из magento 2 admin (System> Custom Variables). Мой пользовательский код переменной - «test_var».Получить переменную magento 2 в файле phtml
Как я могу получить это значение в файле phtml?
// 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');
для этого вы должны использовать объект диспетчера и модель нагрузки, используя свой код переменной
После этого вы можете получить его простое значение, HTML значение и его имя тоже.
<?php
$model = $this->_objectManager->get('Magento\Variable\Model\Variable')->loadByCode('test_var');
$plain_value = $model->getPlainValue();
$html_value = $model->getHtmlValue();
$name = $model->getName();
?>
Использование диспетчера объектов, как это, как правило, неодобрительно. Вероятно, вы должны записать это в блочной логике и выполнить инъекцию зависимости с помощью геттера. Вот запись о том, как это сделать. http://devdocs.magento.com/guides/v2.0/extension-dev-guide/depend-inj.html#injection-types-used-in-magento – espradley
Чтобы добавить комментарий к espradley, вы ссылаетесь здесь для получения дополнительной информации: http://magento.stackexchange.com/questions/117098/magento-2-to-use-or-not-to-use-the-objectmanager-directly – 10basetom
«Чистый» способ - сделать это с помощью инъекции зависимости.
Создайте свой собственный блок:
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() ?>
Пожалуйста, используйте этот код:
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$variable = $objectManager->create('Magento\Variable\Model\Variable');
$value = $variable->loadByCode('variableCode')->getPlainValue();
echo $value;
Спасибо за ур ответ. Я попробовал и получил следующую ошибку. Ошибка нечистоты: класс «Маг» не найден в ... –
Я думаю, что вы делаете это во внешнем файле. добавьте следующий код в начало файла. 'require_once ('app/Mage.php'); umask (0); Mage :: app(); ' –
Этот ответ предназначен для Magento1, а не Magento2 по запросу. – Maddy