我收到此错误:
消息为“常量名称”的未捕获异常“ InvalidArgumentException”是预期的。
php bin/magento setup:upgrade
在命令行中运行时。
我收到此错误:
消息为“常量名称”的未捕获异常“ InvalidArgumentException”是预期的。
php bin/magento setup:upgrade
在命令行中运行时。
Answers:
为了帮助您调试正在发生的事情,我建议临时编辑文件
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']);
}
因此,您将被告知哪个类/常量导致了您的错误:
希望它可以帮助别人;-)见
如果您的扩展名位于app / code文件夹中,则在module.xml中,如果您的文件夹名称与Magento_之后的模块名称不同,则会出现此错误
例如:如果模块名称为Magento_MyGreatModule,则文件夹名称必须为MyGreatModule。
就像前面的答案中已经提到的那样,这很可能是因为您的一个配置文件中存在一些错误。例如,当您执行以下操作而没有声明常量的类(请注意::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>