Magento 2クラス*工場は存在しません


15

プラグインをインストールしようとして、var / generationとvar / cache / *を削除しました。MAGE_MODEを確認しましたが、開発者ですが、フロントエンドと管理者にアクセスすると、次のような意味のランダムエラーが表示されます。 Class Magento\Customer\Model\CustomerFactory does not exist

クラスMagento \ Sales \ Model \ ResourceModel \ Report \ OrderFactoryは存在しません

一部のクラスが作成されていますが、すべてではありません。キャッシュと生成フォルダーを再度クリアしようとしましたが、同じエラーが発生します。

何か案は?


1
var / generationフォルダーの権利を確認します
Marius

drwxrwxrw- 5
jstrez77

var / generationフォルダーを数回クリーニングし、最初にホームページに移動し、クリーン、管理、ログイン、クリーンの順に実行しました... 私はこれを理解していません
-jstrez77

「var / generation」フォルダー内の確実なアクセス許可。
トラビスファンデルフォント

回答:


21

Magento 2は、var/generationディレクトリ内にFactoryクラスを生成します。そのため、そのディレクトリにフォルダ許可の問題またはフォルダ所有者の問題がある場合、ファクトリクラスを生成できず、そのようなエラーが発生します。

var/generationディレクトリをクリアして適切な許可を設定すると、このエラーは解決するはずです。

Magento 2のコード生成の詳細をご覧ください


また、可能性var/divar/cache、参照devdocs.magento.com/guides/v2.2/install-gde/trouble/...
イヴァン・

9

私にとっては、var/generationフォルダを削除してから実行magento setup:di:compileし、必要なすべてのクラスを生成しました。

(私の場合:その後、キャッシュの問題が発生し、初期キャッシュフォルダーを削除しました。)

その後、問題が解決しました。乾杯!!


1
最後にファイルの所有者を変更する必要がありました
moshe beeri

5

2.2.2以降のmagentoの新しいバージョンでは、このコード生成パスは

<Magento root folder>/generated

そのため、このフォルダの権限も確認する必要があります。この問題を解決するには、Magentoインストールディレクトリのルートで次のコマンドを実行する必要があります。

sudo chmod -R 777 generated/

開始時にキャッシュもクリアする
ハッサンアリシャザド

私の仕事
matinict

1

次のコマンドを実行する必要があります。

sudo php -f bin/magento setup:di:compile 

sudo rm -rf pub/static/*/*; sudo rm -rf var/*/*; 
sudo php -f bin/magento setup:static-content:deploy -f  

sudo php bin/magento cache:clean

また、適切な許可が必要です。本番環境では、適切な権限を実行する必要があります。ただし、ローカルマシンでは、完全な権限を実行できます。

sudo chmod -R 777 *

1

777の許可を与え、所有権をgenerated / codeフォルダーのwww-dataに変更してから、コマンドsudo php bin/magento setup:di:compileclear cacheを実行し て問題を解決します


1

これは単なる<magento-root>/var/フォルダーのアクセス許可の問題です。

CLIモードを使用して以下のコマンドを実行します

sudo chmod -R 777 var/

0

Magento 2は、工場クラスを作成します var/generationフォルダーにします。新しいパラメーターを追加し、その__construct()Factoryクラスが存在しない場合、Magento 2は上記のエラーメッセージをスローします。すでにあなたに質問を提供するソリューションはほとんどありませんが、生成フォルダをクリアする必要のない別のソリューションを提案できます。Factoryクラスに関連する変更が行われた後、以下のコマンドを使用してください。

bin/magento setup:di:compile

このコマンドは、実稼働サーバーでより役立つ場合があります。


-2

クラス... Factoryは存在しません。モデルクラスがロードされていません。Magento 2はモジュラープログラミングに基づいているため、使用するモデルクラスを明示的に指定する必要があります。モデルクラスは2つのタイプで使用できます。

1.by「使用」

use Magento\Customer\Setup\CustomerSetupFactory;

public function __construct(CustomerSetupFactory $customerSetupFactory)
{
    $this->customerSetupFactory = $customerSetupFactory;
}
  1. 直接

    public function __construct(Magento\Customer\Setup\CustomerSetupFactory $customerSetupFactory){
    
    $this->customerSetupFactory = $customerSetupFactory;
    
    }

ブラウザ上のプラグインのURL(http://domain.com/your module frontname)を押すと、Magentoは以下のようにモジュールのコードを生成します。

\var\generation\Your Vendor Directory\Your Module Directory\Controller
\var\generation\Your Vendor Directory\Your Module Directory\Model

あなたの場合、「CustomerFactory」を確認する必要があり、「OrderFactory」が上記の形式として使用されているかどうかを確認します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.