定数名が必要です。エラー


12

私はこのエラーを受け取っています:

キャッチされない例外 'InvalidArgumentException'とメッセージ '定数名が必要です。

php bin/magento setup:upgradeコマンドラインで実行中。

このhttp://awesomescreenshot.com/0535zi4648エラーが発生しました。

回答:


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

以前の回答ですでに述べたように、これはおそらく構成ファイルの1つにエラーがあるためです。たとえば、このエラーは、定数を宣言するクラス(::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> 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.