Nome constante é esperado. Erro


12

Estou recebendo este erro:

Exceção não capturada 'InvalidArgumentException' com a mensagem 'Nome constante é esperada.

Enquanto estiver executando php bin/magento setup:upgradena linha de comando.

Eu tenho esse erro http://awesomescreenshot.com/0535zi4648 .

Respostas:


16

Eu acho que algum problema na sua pasta etc. verifique todos os arquivos xml . O nome constante deve estar em CAPITALletras. qualquer uma de suas constantes permanece em letras minúsculas. verifique e corrija. Espero que isso resolva o seu problema.


13

Para ajudá-lo a depurar o que está acontecendo, sugiro editar temporariamente o arquivo

vendor/magento/framework/Data/Argument/Interpreter/Constant.php

A partir disso ...

public function evaluate(array $data) {
    if(!isset($data['value']) || !defined($data['value'])) {
        throw new \InvalidArgumentException('Constant name is expected.');
    }
    return constant($data['value']);
}

Para isso...

public function evaluate(array $data) {
    if(!isset($data['value']) || !defined($data['value'])) {
        print_r($data);exit;                                                    // <<<<<<<<<<<<
        throw new \InvalidArgumentException('Constant name is expected.');
    }
    return constant($data['value']);
}

Dessa forma, você será notificado sobre qual classe / constante está causando o erro:

insira a descrição da imagem aqui

Espero que possa ajudar alguém ;-) Até mais


11

No caso de sua extensão estar na pasta app / code, você receberá este erro se o nome da pasta for diferente do nome do módulo após Magento_ no module.xml

por exemplo: se o nome do seu módulo for Magento_MyGreatModule, o nome da pasta deverá ser MyGreatModule .


obrigado ! outro ótimo exemplo de mensagem de erro enganosa ...
medmek

Essa resposta funcionou para mim também.
Arfeen

Obrigado! Encontrei este aqui depois que eu renomeei meu módulo.
Giel Berkers #

3

Como já foi dito nas respostas anteriores, é provável que haja algum erro em um dos seus arquivos de configuração. Por exemplo, esse erro é acionado quando você faz o seguinte sem ter uma classe que declara a constante (observe a ::CODEdeclaração):

<!-- etc/di.xml -->
<virtualType name="ExamplePaymentGatewayConfig" type="Magento\Payment\Gateway\Config\Config">
  <arguments>
    <argument name="methodCode" xsi:type="const">\Company\Example\Model\Ui\ConfigProvider::CODE</argument>
  </arguments>
</virtualType> 
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.