常量名称是预期的。错误


Answers:


16

我认为您的etc文件夹中存在一些问题。检查所有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文件夹中,则在module.xml中,如果您的文件夹名称与Magento_之后的模块名称不同,则会出现此错误

例如:如果模块名称为Magento_MyGreatModule,则文件夹名称必须为MyGreatModule


谢谢 !误导性错误消息的另一个很好的例子……
medmek

这个答案也对我有用。
Arfeen

谢谢!重命名模块后,进入这一模块。
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> 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.