Se espera un nombre constante. Error

Respuestas:

16

Creo que hay algún problema en su carpeta, etc. verifique todos los archivos xml . El nombre constante debe estar en CAPITALletras. cualquiera de sus constantes permanecen en minúsculas. compruébalo y corrígelo. Espero que esto resuelva su problema.

Un chauhan
fuente
13

Para ayudarlo a depurar lo que está sucediendo, sugeriría editar temporalmente el archivo

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

De esto...

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

A esto...

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']);
}

De este modo, se le notificará qué clase / constante le está causando el error:

ingrese la descripción de la imagen aquí

Espero que pueda ayudar a alguien más ;-) Nos vemos

rou6e
fuente
11

En el caso de que su extensión esté en la carpeta de aplicación / código, obtendrá este error si el nombre de su carpeta es diferente al nombre del módulo después de Magento_ en module.xml

por ejemplo: si el nombre de su módulo es Magento_MyGreatModule, el nombre de su carpeta debe ser MyGreatModule .

masitko
fuente
gracias ! otro gran ejemplo de
mensaje de
Esta respuesta también funcionó para mí.
Arfeen
¡Gracias! Me encontré con este después de cambiar el nombre de mi módulo.
Giel Berkers
3

Como ya se indicó en las respuestas anteriores, esto es más probable debido a algún error en uno de sus archivos de configuración. Por ejemplo, este error se activa cuando hace lo siguiente sin tener una clase que declare la constante (observe la ::CODEdeclaración):

<!-- 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> 
Código ciclónico
fuente