Cursos Magento

Como obter um valor de uma configuração em seu módulo Magento

,

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:

  1. Injetar a classe \Magento\Framework\App\Config\ScopeConfigInterface em seu construtor (__construct)
  2. 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.

Últimos posts por Ricardo Martins (exibir todos)
Comentários

Deixe seu comentário

[fbcomments url="https://www.magenteiro.com/blog/magento-2/como-obter-um-valor-de-uma-configuracao-em-seu-modulo-magento/"]