Un nom constant est attendu. Erreur

12

Je reçois cette erreur:

Exception non interceptée 'InvalidArgumentException' avec le message 'Nom constant est attendu.

Lors de l'exécution php bin/magento setup:upgradeen ligne de commande.

j'ai eu cette erreur http://awesomescreenshot.com/0535zi4648 .

het21
la source

Réponses:

16

Je pense que certains problèmes dans votre dossier etc. vérifier tous les fichiers xml . Le nom constant doit être en CAPITALlettres. n'importe laquelle de vos constantes reste en petites lettres. vérifiez-le et corrigez-le. J'espère que cela résoudra votre problème.

Un chauhan
la source
13

Afin de vous aider à déboguer ce qui se passe, je suggère de modifier temporairement le fichier

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

De cela ...

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

Pour ça...

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

Ainsi, vous serez informé de la classe / constante qui vous cause l'erreur:

entrez la description de l'image ici

J'espère que cela pourrait aider quelqu'un d'autre ;-) À bientôt

rou6e
la source
11

Dans le cas où votre extension se trouve dans le dossier app / code, vous obtiendrez cette erreur si le nom de votre dossier est différent du nom du module après Magento_ dans module.xml

par exemple: si le nom de votre module est Magento_MyGreatModule, le nom de votre dossier doit être MyGreatModule .

masitko
la source
Merci ! un autre excellent exemple de message d'erreur trompeur ...
medmek
Cette réponse a également fonctionné pour moi.
Arfeen
Je vous remercie! Je suis tombé sur celui-ci après avoir renommé mon module.
Giel Berkers
3

Comme déjà indiqué dans les réponses précédentes, cela est probablement dû à une erreur dans l'un de vos fichiers de configuration. Par exemple, cette erreur est déclenchée lorsque vous effectuez les opérations suivantes sans avoir de classe qui déclare la constante (notez la ::CODEdéclaration):

<!-- 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> 
Cyclonecode
la source