Ожидается постоянное имя. ошибка


12

Я получаю эту ошибку:

Необработанное исключение «InvalidArgumentException» с сообщением «Ожидается постоянное имя.

Пока работает php bin/magento setup:upgradeв командной строке.

Я получил эту ошибку http://awesomescreenshot.com/0535zi4648 .

Ответы:


16

Я думаю, что некоторые проблемы в вашей папке и т.д. проверьте все XML- файлы. Имя константы должно быть в CAPITALписьмах. любые ваши константы остаются маленькими буквами. проверь и исправь. Надеюсь, что это решит вашу проблему.


13

Чтобы помочь вам отладить происходящее, я бы предложил временно отредактировать файл

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

Из этого...

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

К этому...

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

Тем самым вы будете уведомлены о том, какой класс / константа вызывает у вас ошибку:

введите описание изображения здесь

Надеюсь, что это может помочь кому-то еще ;-) Увидимся


11

Если ваше расширение находится в папке app / code, вы получите эту ошибку, если имя вашей папки отличается от имени модуля после Magento_ в module.xml

например: если имя вашего модуля Magento_MyGreatModule, имя вашей папки должно быть MyGreatModule .


благодарю вас ! еще один замечательный пример вводящей в заблуждение ошибки msg ...
medmek

Этот ответ сработал и для меня.
Арфин

Спасибо! Столкнулся с этим после того, как я переименовал свой модуль.
Giel Berkers

3

Как уже говорилось в предыдущих ответах, это, скорее всего, связано с ошибкой в ​​одном из ваших файлов конфигурации. Например, эта ошибка возникает, когда вы делаете следующее, не имея класса, который объявляет константу (обратите внимание на ::CODEобъявление):

<!-- 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> 
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.