আমি মনে করি যে ব্লকগুলির সাথে ম্যাজেন্টো 2 নির্ভরতা ইনজেকশনটি উপলব্ধি করার জন্য আমি লড়াই করছি, প্রতিবারই আমি কোনও ব্লকটি প্রসারিত করার চেষ্টা করব যা \ ম্যাজেন্টো \ ফ্রেমওয়ার্ক work দেখুন \ উপাদান \ টেমপ্লেটটি আমি ত্রুটিগুলি সহ শেষ করি না।
আমি এমন একটি ব্লক তৈরি করতে চাই যা মাগেন্তো \ থিম \ ব্লক \ এইচটিএমএল \ শিরোলেখ \ লোগোর খুব প্রাথমিক ব্লক শ্রেণি প্রসারিত করে - যতক্ষণ না আমি নির্মাণ পদ্ধতির মধ্যে নির্ভরতা ইনজেকশন চেষ্টা না করি সবকিছু ঠিকঠাক কাজ করে:
<?php
namespace Creare\Test\Block\Header;
class Logo extends \Magento\Theme\Block\Html\Header\Logo
{
protected $_creareHelper;
public function __construct(
\Magento\Framework\View\Element\Template\Context $context,
\Creare\Seo\Helper\Data $creareHelper,
array $data = []
)
{
$this->_creareHelper = $creareHelper;
parent::__construct($context, $data);
}
}
যত তাড়াতাড়ি আমি আমার সহায়ক ক্লাসটি ইনজেকশনের চেষ্টা করার সাথে সাথে (বা অন্য কোনও বিষয়, নিম্নলিখিত ত্রুটি দিয়ে শুরু করে একটি স্ট্যাক ট্রেস পেয়েছি:
Recoverable Error: Argument 2 passed to Magento\Theme\Block\Html\Header\Logo::__construct() must be an instance of Magento\MediaStorage\Helper\File\Storage\Database, array given, called in /Users/adammoss/PhpstormProjects/Magento2/app/code/Creare/Test/Block/Header/Logo.php on line 17 and defined in /Users/adammoss/PhpstormProjects/Magento2/app/code/Magento/Theme/Block/Html/Header/Logo.php on line 33
আমি যদি আমার __ কনস্ট্রাক্টের মতো ফাইলটি যেভাবে প্রসারিত করি তার সাথে একই নির্ভরতা যুক্ত করি তবে শ্রেণি উত্তরাধিকারের দিক হিসাবে জিনিসগুলি করার পিছনের দিকটি কি আমি পিতামাতার সমস্ত পদ্ধতি এবং বৈশিষ্ট্যগুলি শোষিত করি?
আমি মনে করি ক্লাস থেকে বাড়ানো এবং ম্যাজেন্টো ২ দিয়ে ডিআই ব্যবহার করার বিষয়ে কারও কাছ থেকে আমার কেবল একটি প্রাথমিক 101 টি ব্যাখ্যা দরকার need যে কোনও সাহায্যের প্রশংসা করুন!