Magento 2 - 개체 관리자가 추상 클래스를 인스턴스화하려고 시도합니다.( 치명적 오류 )

magento.stackexchange https://magento.stackexchange.com//questions/76584

문제

Magento 2를 가지고 놀다가 문제가 발생하여 머리를 감쌀 수 없습니다.개체 관리자가 추상 클래스를 인스턴스화하려고 시도하면 치명적인 오류가 발생합니다.누군가 이 문제의 원인을 알고 있거나 올바른 방향을 알려줄 수 있습니까?

오류

Fatal error: Cannot instantiate abstract class Magento\Framework\Model\Resource\AbstractResource in /lib/internal/Magento/Framework/ObjectManager/Factory/Dynamic/Developer.php on line 75

문제

내 모듈에는 다음을 확장하는 모델이 있습니다. \Magento\Quote\Model\Quote.이 모델의 생성자에는 이를 주입하는 다음 줄이 있습니다.

\Magento\Framework\Model\Resource\AbstractResource $resource = null,.

모델을 인스턴스화하는 컨트롤러는 \Magento\Backend\App\Action 그리고 사용 $this->_objectManager->create() 모델을 인스턴스화합니다.

머리를 감쌀 수 없는 것은 Magento 모델을 인스턴스화하면 제대로 작동하지만 모델을 인스턴스화하면 위의 오류를 발생시키는 이 추상 클래스를 인스턴스화하려고 한다는 것입니다.개체 관리자에게 이 작업을 수행하도록 지시하는 내용은 무엇이며 문제를 어떻게 해결할 수 있습니까?

내 첫 번째 생각은 Magento가 di.xml 이것을 교체하거나, 이것을 실행하거나, 그렇지 않았습니다.

시간을 내어 읽어주셔서 감사합니다.이 문제에 대한 도움이나 의견을 보내주시면 감사하겠습니다.

도움이 되었습니까?

해결책

이는 하위 클래스가 상위 클래스의 기존 선택적 종속성 뒤에 새 종속성을 추가한 경우 발생할 수 있습니다.

상위 항목의 스니펫

    \Magento\Quote\Model\Cart\CurrencyFactory $currencyFactory,  // required
    JoinProcessorInterface $extensionAttributesJoinProcessor,    // required
    \Magento\Framework\Model\Resource\AbstractResource $resource = null,       //optional
    \Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null,  //optional
    array $data = [] //optional
)}

코드가 선택 사항을 변경하는 방법

    \Magento\Quote\Model\Cart\CurrencyFactory $currencyFactory,  // required
    JoinProcessorInterface $extensionAttributesJoinProcessor,    // required
    \Magento\Framework\Model\Resource\AbstractResource $resource = null,       // required (even though it has a default value, because it is followed by parameters that don't have default values)
    int $x, // required
    \Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null,  // optional (still optional because there are no required parameters following it)
    array $data = [] // optional
)}

Magento 2 개체 관리자는 필요한 매개변수를 삽입하려고 시도합니다.따라서 생성자의 끝에 필수 매개변수를 추가한 경우 이런 일이 발생할 수 있습니다.

새로운 필수 매개변수를 선택 매개변수 위로 이동하여 이 문제를 해결할 수 있습니다.

다른 팁

때때로 일부 모듈이 업데이트되었지만 /generated 아래의 참조가 아직 업데이트되지 않았습니다.

그냥 해보세요 bin/magento setup:di:compile 그리고 다시 시도해 보세요.

(결제 모듈을 업데이트하고 /checkout이 로드되지 않을 때 저에게 도움이 되었습니다)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 magento.stackexchange
scroll top