Lỗi nghiêm trọng: Không thể khởi tạo giao diện trong Magento 2?


21

Là một phần của việc tạo gói sản phẩm theo chương trình trong Magento 2. Tôi gặp lỗi dưới đây. Ngay cả tôi đã loại bỏ var / cache và thế hệ.

Đây có thể là một câu hỏi trùng lặp nhưng không có câu trả lời nào hoạt động cho vấn đề này.

Lỗi nghiêm trọng: Không thể khởi tạo giao diện Magento \ Catalog \ Api \ Data \ ProductExtensionInterface trong \ ObjectManager \ Factory \ Dynamic \ Developer.php trên dòng 73

Được sử dụng dưới đây mã làm tham chiếu của liên kết

$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);

Tôi đang sử dụng trình quản lý đối tượng cho mục đích tạm thời / nhanh chóng, sẽ chuyển đổi trình quản lý đối tượng thành lệnh xây dựng.

Bất cứ ai có thể giúp tôi về vấn đề này.

Câu trả lời:


20

Tôi nghĩ rằng bạn đã không đề cập đến các ưu tiên trong di.xml của bạn. Tôi cũng gặp vấn đề tương tự khi tôi đang tạo mô-đun tệp xml cấu hình tùy chỉnh.

Tôi gặp vấn đề khi tôi gọi mã này:

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

Dưới đây là mã mẫu mà tôi đã thêm trong di.xml của mình , có thể nó có thể giúp bạn có được tài liệu tham khảo:

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

Ở đây tôi đã triển khai giao diện trong Training\Test\Model\Configlớp và getMyNodeInfo()phương thức của tôi được định nghĩa trong Mô hình đó.

Vì vậy, dựa trên tùy chọn được định nghĩa trong di.xml , mã ->get('Training\Test\Model\Config\ConfigInterface');sẽ tạo một đối tượng kiểu Training\Test\Model\Config.


7

Bạn không nên sử dụng ObjectManager.

Thu thập các phụ thuộc của bạn thông qua _constructor.

Trong trường hợp giao diện của bạn vẫn không được tải, hãy kiểm tra di.xmlvà xác thực rằng một tùy chọn có sẵn.


@ David Lambauer Ngay cả khi tôi đã sử dụng hàm tạo, tôi đang nhận được giao diện không thể khởi tạo Magento \ Catalog \ Api \ Data \ ProductExtensionInterface trong magento \ framework \ ObjectManager \ Factory \ Dynamic \ Developer.php trên dòng 73
Krishna ijjada

1
Bạn đã thêm nhà máy vào báo cáo sử dụng của bạn? sử dụng Magento \ Catalog \ Api \ Data \ ProductExtensionInterfaceFactory;
David Lambauer

6

Tôi đã vật lộn với điều này và sau đó tìm thấy một giải pháp hiệu quả cho tôi trong tài liệu ở đây.

Hãy chắc chắn để thêm giao diện của bạn dưới dạng tùy chọn (chính xác) trong di.xml.


2
Vấn đề của tôi là tôi đã đặt di.xml trong thư mục etc / frontend thay vì root vv một cách tình cờ, nhưng câu trả lời của bạn đã khiến tôi tìm thấy điều đó.
KyleBunga
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.