Как получить данные из конфигурации системы Magento
Я просто размышляю о том, как я могу получить данные конфигурации для своего пользовательского модуля. Конфигурацию можно задать от администратора system->configuration
и как ее вытащить во внешний интерфейс?
4 answers
$configValue = Mage::getStoreConfig('sectionName/groupName/fieldName');
Название раздела, Имя группы и Имя поля присутствуют в etc/system.xml файл вашего модуля.
Приведенный выше код автоматически извлекает значение конфигурации текущего просматриваемого хранилища.
Если вы хотите получить значение конфигурации любого другого магазина, кроме просматриваемого в данный момент, вы можете указать идентификатор магазина в качестве второго параметра функции getStoreConfig
, как показано ниже:
$store = Mage::app()->getStore(); // store info
$configValue = Mage::getStoreConfig('sectionName/groupName/fieldName', $store);
Вам следует использовать следующий код
$configValue = Mage::getStoreConfig(
'sectionName/groupName/fieldName',
Mage::app()->getStore()
);
Mage::app()->getStore()
это добавит код магазина в значения выборки, чтобы вы могли получить правильные значения конфигурации для текущего магазина. это позволит избежать неправильных значений магазина, потому что magento также используется для нескольких магазинов/представлений, поэтому необходимо добавить код магазина, чтобы получить что-либо в magento.
Если у нас настроено более одного хранилища или несколько представлений, это гарантирует, что мы получим значения для текущего хранилища
Magento 1.x
( пример magento 2 приведен ниже)
Название раздела, Имя группы и Имя поля присутствуют в etc/system.xml файл модуля.
Синтаксис PHP:
Mage::getStoreConfig('sectionName/groupName/fieldName');
Из редактора в администраторе, например, содержимое страницы CMS или статического блока; описание/краткое описание Категории каталога, Продукта каталога и т. Д.
{{config path="sectionName/groupName/fieldName"}}
Для подхода "Внутри редактора" к работе, значение поля должно быть передано через фильтр для {{... }} содержимое, подлежащее анализу. Из коробки Magento сделает это для описания категорий и продуктов, а также страниц CMS и статических блоков. Однако, если вы выводите содержимое в своем собственном пользовательском сценарии просмотра и хотите, чтобы эти переменные были проанализированы, вы можете сделать это следующим образом:
<?php
$example = Mage::getModel('identifier/name')->load(1);
$filter = Mage::getModel('cms/template_filter');
echo $filter->filter($example->getData('field'));
?>
Замена идентификатора / имя с соответствующими значениями a для загружаемой модели и поле с именем атрибута, который вы хотите вывести, которое может содержать {{... }} случаи, которые необходимо проанализировать.
Magento 2.x
Из любого класса блоков, который расширяет \Magento\Framework\Представление\Элемент\Абстрактный блок
$this->_scopeConfig->getValue('sectionName/groupName/fieldName');
Любой другой класс PHP:
Если класс (и ни один из его родителей) не вводит \Magento\Framework\App\Config\ScopeConfigInterface
через конструктор, вам придется добавить его в свой класс.
// ... Remaining class definition above...
/**
* @var \Magento\Framework\App\Config\ScopeConfigInterface
*/
protected $_scopeConfig;
/**
* Constructor
*/
public function __construct(
\Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig
// ...any other injected classes the class depends on...
) {
$this->_scopeConfig = $scopeConfig;
// Remaining constructor logic...
}
// ...remaining class definition below...
Как только вы введете его в свой класс теперь вы можете извлекать значения конфигурации хранилища с помощью того же примера синтаксиса, приведенного выше для классов блоков.
Обратите внимание, что после изменения списка параметров __construct() любого класса может потребоваться очистить созданные классы, а также каталог внедрения зависимостей: var/generation
& var/di
Например, если вы хотите получить АДРЕС электронной ПОЧТЫ из конфигурации ->хранить адреса электронной почты. Вы можете указать, в каком магазине вам нужен адрес:
$store=Mage::app()->getStore()->getStoreId();
/* Sender Name */
Mage::getStoreConfig('trans_email/ident_general/name',$store);
/* Sender Email */
Mage::getStoreConfig('trans_email/ident_general/email',$store);