ข้อผิดพลาดร้ายแรง: ไม่สามารถยกตัวอย่างอินเทอร์เฟซใน Magento 2 ได้หรือไม่


21

ในฐานะที่เป็นส่วนหนึ่งของการสร้างผลิตภัณฑ์ชุดโดยทางโปรแกรมในวีโอไอพี 2 ฉันได้รับข้อผิดพลาดด้านล่าง แม้ฉันจะลบ var / cache และการสร้าง

นี่อาจเป็นคำถามที่ซ้ำกัน แต่ไม่มีคำตอบสำหรับปัญหานี้

ข้อผิดพลาดร้ายแรง: ไม่สามารถสร้างอินเทอร์เฟซ Magento \ Catalog \ Api \ Data \ ProductExtensionInterface ใน \ ObjectManager \ Factory \ Dynamic \ Developer.php ที่บรรทัด 73

ใช้โค้ดด้านล่างเพื่อการอ้างอิงของลิงค์

$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 ของคุณ ฉันยังประสบปัญหาเดียวกันเมื่อฉันสร้างโมดูลไฟล์ config 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และตรวจสอบว่ามีการกำหนดค่าตามความชอบ


@ David Lambauer แม้ฉันจะใช้ constructor ฉันไม่สามารถสร้างอินเทอร์เฟซ Magento \ Catalog \ Api \ Data \ ProductExtensionInterface ใน magento \ framework \ ObjectManager \ Factory \ Dynamic \ Developer.php บนบรรทัดที่ 73
Krishna ijjada

1
คุณเพิ่มโรงงานลงในใบแจ้งการใช้งานของคุณหรือไม่? ใช้ Magento \ Catalog \ Api \ Data \ ProductExterensionInterfaceFactory;
David Lambauer

6

ฉันต่อสู้กับสิ่งนี้และจากนั้นก็พบวิธีแก้ปัญหาที่เหมาะกับฉันในเอกสารที่นี่

ตรวจสอบให้แน่ใจว่าได้เพิ่มอินเทอร์เฟซของคุณเป็นค่ากำหนด (ถูกต้อง) ใน di.xml


2
ปัญหาของฉันคือฉันวาง di.xml ไว้ในโฟลเดอร์ etc / frontend แทนที่จะเป็น root โดยไม่ตั้งใจ แต่คำตอบของคุณทำให้ฉันพบสิ่งนั้น
KyleBunga
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.