Como obter um valor de uma configuração em seu módulo Magento
Desenvolvimento, Magento 2
Publicado em 05 de agosto de 2022
Os valores e configurações definidos em Lojas > Configuração, são salvos na tabela core_config_data
. Esta tabela armazena os valores de configuração de todos os escopos de configuração. Isto é, dos valores configurados a nível global, de website ou a nível de visão de loja.
+---------+-------+--------+--------------------------------------------+--------------------------------------------------------------------------------------------------------+-------------------+ |config_id|scope |scope_id|path |value |updated_at | +---------+-------+--------+--------------------------------------------+--------------------------------------------------------------------------------------------------------+-------------------+ |1 |default|0 |yotpo/module_info/yotpo_installation_date |2020-07-29 |2020-07-29 06:11:01| |2 |default|0 |yotpo/sync_settings/orders_sync_start_date |2055-07-01 |2020-08-11 06:39:05| |3 |default|0 |currency/options/base |BRL |2020-07-29 06:11:02| |4 |default|0 |currency/options/default |BRL |2020-07-29 06:11:02| |5 |default|0 |currency/options/allow |USD,EUR,BRL |2021-06-23 22:10:10| |6 |default|0 |general/region/display_all |1 |2020-07-29 06:11:03| |7 |default|0 |general/region/state_required |AL,AR,AU,BG,BO,BR,BY,CA,CH,CL,CN,CO,DK,EC,EE,ES,GR,GY,HR,IN,IS,IT,LT,LV,MX,PE,PL,PT,PY,RO,SE,SR,US,UY,VE|2022-08-01 01:12:44| |8 |default|0 |catalog/category/root_id |2 |2020-07-29 06:11:05| |9 |default|0 |analytics/subscription/enabled |0 |2020-08-07 04:05:29| |12 |default|0 |msp_securitysuite_recaptcha/frontend/enabled|0 |2020-07-29 06:11:06| +---------+-------+--------+--------------------------------------------+--------------------------------------------------------------------------------------------------------+-------------------+
Mas como podemos obter um valor específico de uma destas configurações?
Dentro de um módulo
Para obter um valor de configuração dentro de um módulo, você deve:
- Injetar a classe
\Magento\Framework\App\Config\ScopeConfigInterface
em seu construtor (__construct
) - Chamar o método
getValue($path, $scopeType = ScopeConfigInterface::SCOPE_TYPE_DEFAULT, $scopeCode = null)
$path
– Corresponde ao caminho da configuração, como guardado na tabela core_config_data
e exibido acima
$scope
– Trata-se do escopo de configuração, e ele pode ser uma das constantes definidas em \Magento\Store\Model\ScopeInterface
. Isto é: SCOPE_STORE, SCOPE_GROUP, ou SCOPE_WEBSITE.
Exemplo
<?php declare(strict_types=1); #namespace ... use Magento\Framework\App\Config\ScopeConfigInterface; class MagenteiroExemplo { const XML_PATH_ENABLED = 'mautic/general/enabled'; /** * @var \Magento\Framework\App\Config\ScopeConfigInterface */ protected \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig; /** * @param \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig */ public function __construct(\Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig) { $this->scopeConfig = $scopeConfig; } /** * @return bool */ public function isEnabled() { return (bool)$this->scopeConfig->getValue(self::XML_PATH_ENABLED); } }
No terminal
Se você quer apenas obter um valor de config no terminal, basta usar o comando bin/magento config:show
.
Por exemplo: bin/magento config:show web/secure/base_url
Você pode também especificar o --scope
e/ou --scope-code
como mostra o --help
do mesmo comando:
$ bin/magento config:show --help Description: Shows configuration value for given path. If path is not specified, all saved values will be shown Usage: config:show [options] [--] [<path>] Arguments: path Configuration path, for example section_id/group_id/field_id Options: --scope[=SCOPE] Scope for configuration, if not specified, then 'default' scope will be used [default: "default"] --scope-code[=SCOPE-CODE] Scope code (required only if scope is not `default`) [default: ""] -h, --help Display this help message -q, --quiet Do not output any message -V, --version Display this application version --ansi Force ANSI output --no-ansi Disable ANSI output -n, --no-interaction Do not ask any interactive question -v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
Valores podem ser sobrescritos
Note que valores de configuração podem ser sobrescritos por variáveis de ambiente. Sendo assim, é possível que o valor exibido com o comando ou dentro de seu módulo, possua valores diferentes dependendo das configurações do seu servidor.
Mas fique tranquilo(a). Isso é útil em situações específicas e normalmente não é utilizado de forma ampla e para alterar valores massivamente.
Note também que os arquivos app/etc/env.php
e app/etc/config.php
também podem definir valores de configuração. E adivinha? Eles também podem sobrescrever valores de configuração definidos na tabela core_config_data
.
Mas isso é assunto para outro artigo ou para o Magento 2: O Curso.
Alterou? Limpe os caches.
Valores de configuração são salvos em cache, e configurações que afetam a o visual de sua loja também são cacheados.
Sendo assim, ao alterar uma configuração, lembre-se de limpar os caches full_page e config. Isso pode ser feito com bin/magento c:c config full_page
.
- PagSeguro (PagBank) para Magento 1 recebe a Nova Geração - 9 de abril de 2024
- Recorrência no WooCommerce Sem Plugins Pagos - 28 de janeiro de 2024
- Chargeback. O que é, e como se livrar deles. - 19 de dezembro de 2023
Deixe seu comentário
[fbcomments url="https://www.magenteiro.com/blog/magento-2/como-obter-um-valor-de-uma-configuracao-em-seu-modulo-magento/"]