치명적인 오류 : Magento 2에서 인터페이스를 인스턴스화 할 수 없습니까?


21

Magento 2에서 프로그래밍 방식으로 번들 제품을 만드는 과정에서 오류가 발생합니다. 심지어 var / cache 및 생성을 제거했습니다.

중복 된 질문 일 수 있지만이 문제에 대한 답변은 없습니다.

치명적인 오류 : 73 행의 \ ObjectManager \ Factory \ Dynamic \ Developer.php에서 Magento \ Catalog \ Api \ Data \ ProductExtensionInterface 인터페이스를 인스턴스화 할 수 없습니다.

아래 코드를 링크 참조로 사용

$productExtension = $objectManager->create(\Magento\Catalog\Api\Data\ProductExtensionInterface::class);
$option = $objectManager->create(\Magento\Bundle\Api\Data\OptionInterface::class);
$option->setTitle('Size');
$option->setType('radio');
$option->setRequired(true);
$option->setPosition(1);
//$option->setProductLinks($links);
$productExtension->setBundleOptions([$option]);
$_product->setExtensionAttributes($productExtension);

임시 / 빠른 목적으로 객체 관리자를 사용하고 있으며 객체 관리자를 생성자 명령으로 변환합니다.

아무도이 문제에 대해 나를 도울 수 있습니다.

답변:


20

di.xml에 선호 사항을 언급하지 않았다고 생각합니다. 사용자 정의 구성 xml 파일 모듈을 만들 때도 동일한 문제에 직면했습니다.

이 코드를 호출했을 때 문제가 발생했습니다.

$testConfig = $this->_objectManager->get('Training\Test\Model\Config\ConfigInterface');
$myNodeInfo = $testConfig->getMyNodeInfo();

다음은 di.xml에 추가 한 샘플 코드입니다 . 참조하는 데 도움이 될 수 있습니다.

<preference for="Training\Test\Model\Config\ConfigInterface" type="Training\Test\Model\Config" />

여기에 Training\Test\Model\Config클래스 에서 인터페이스를 구현했으며 내 getMyNodeInfo()메소드가 해당 모델에 정의되어 있습니다.

따라서 di.xml에 정의 된 환경 설정을 기반으로 코드 ->get('Training\Test\Model\Config\ConfigInterface');는 유형의 객체를 만듭니다 Training\Test\Model\Config.


7

를 사용해서는 안됩니다 ObjectManager.

를 통해 종속성을 수집하십시오 _constructor.

인터페이스가 여전히로드되지 않으면 사용자 di.xml환경을 확인하고 환경 설정을 사용할 수 있는지 확인하십시오 .


데이비드 Lambauer 심지어 내가 생성자를 사용 @ 내가 젠토 \ 카탈로그 \ API 광고 \ 데이터 \ ProductExtensionInterface가 젠토에서 \ 프레임 워크 \ ObjectManager \ 공장 \ 동적 \ Developer.php 인터페이스 라인 73에하지 인스턴스화 할 수 있습니다 무엇입니까
크리슈나 ijjada

1
사용 설명에 팩토리를 추가 했습니까? Magento \ Catalog \ Api \ Data \ ProductExtensionInterfaceFactory를 사용하십시오.
David Lambauer

6

나는 이것으로 어려움을 겪고 여기 문서 에서 나를 위해 일한 해결책을 찾았 습니다.

di.xml에서 인터페이스를 환경 설정으로 올바르게 추가하십시오.


2
내 문제는 실수로 etc.root 대신 di.xml을 etc / frontend 폴더에 넣었다는 것이었지만 당신의 대답으로 그것을 찾을 수있었습니다.
KyleBunga
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.