마 젠토 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 1

'var / generation'폴더 내에서 확실히 권한.
트래비스 반 데르 글꼴

답변:


21

Magento 2는 var/generation디렉토리 내에 팩토리 클래스를 생성 합니다. 따라서 해당 디렉토리에 폴더 권한 문제 또는 폴더 소유자 문제가있는 경우 팩토리 클래스를 생성 할 수 없으며 이러한 오류가 발생합니다.

var/generation디렉토리 를 지우고 적절한 권한을 설정하면이 오류를 해결해야합니다.

Magento 2의 코드 생성에 대해 자세히 알아보십시오


var/di또는 가능할 수도 var/cache있습니다. devdocs.magento.com/guides/v2.2/install-gde/trouble/…
Yvan

10

나를 위해 var/generation폴더를 제거한 다음 magento setup:di:compile필요한 클래스를 모두 생성했습니다.

(내 경우 : 캐시 문제가 발생하여 초기 캐시 폴더를 제거했습니다.)

그런 다음 내 문제가 해결되었습니다. 건배 !!


1
마지막에 파일 소유자를 변경해야 함
moshe beeri

5

2.2.2 이상과 같은 magento 새 버전에서는이 코드 생성 경로가

<Magento root folder>/generated

이 폴더에 대한 권한도 확인해야합니다. Magento 설치 디렉토리의 루트에서 다음 명령을 실행하면이 문제가 해결됩니다.

sudo chmod -R 777 generated/

물론 시작과 같이 캐시 지우기
하산 알리 Shahzad

나에 대한 작업
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

생성 된 / 코드 폴더 의 www-data에 777 권한을 부여하고 소유권을 변경 한 후 sudo php bin/magento setup:di:compileclear cache 명령을 실행 하여 문제가 해결됩니다.


1

<magento-root>/var/폴더 권한 문제 일뿐 입니다.

CLI 모드를 사용하여 아래 명령 실행

sudo chmod -R 777 var/

0

Magento 2는 var/generation폴더에 팩토리 클래스를 생성하고 에 새로운 매개 변수를 추가하고 __construct()팩토리 클래스가 존재하지 않으면 Magento 2는 위의 오류 메시지를 발생시킵니다. 몇 가지 해결책이 이미 있지만, 생성 폴더를 지우지 않아도되는 다른 솔루션을 제안 할 수 있습니다. 팩토리 클래스와 관련하여 변경 한 후 아래 명령을 사용하십시오.

bin/magento setup:di:compile

이 명령은 프로덕션 서버에서 더 유용 할 수 있습니다.


-2

클래스 ... 공장이 존재하지 않음은 모델 클래스가로드되지 않았 음을 의미합니다. Magento 2는 모듈 식 프로그래밍을 기반으로하므로 명시 적으로 사용할 모델 클래스를 지정해야합니다. 모델 클래스는 두 가지 유형으로 사용할 수 있습니다.

1. "사용"

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;
    
    }

Magento보다 브라우저에서 플러그인 의 URL ( http://domain.com/your module frontname)을 누르면 다음과 같이 모듈의 코드를 생성합니다.

\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.