মেজেন্টো 2-তে কোনও মডেল কীভাবে ইনস্ট্যান্ট করবেন?


14

ম্যাজেন্টো 2 এর মতো সহজ কিছু করার কোনও উপায় আছে কি?

ম্যাজেন্টো 2-তে এর মতো কল করুন

$model = Mage::getModel('cms/page');

প্রশ্নটি পরিষ্কার নয়, আরও বিশদ রাখুন ....
অমিত বেরা

উত্তর:


28

ম্যাজেন্টো সরাসরি অবজেক্টম্যানেজারের ব্যবহারকে নিরুৎসাহিত করে। এটি এমন পরিষেবা ক্লাস সরবরাহ করে যা এটিকে সমস্ত দৃশ্যের জন্য বিমূর্ত করে তোলে।

সমস্ত ইনজেকশনযোগ্য (মডেল )গুলির জন্য আপনাকে কারখানাটি ব্যবহার করতে হবে:

সুরক্ষিত $ পেজ ফ্যাক্টরি;

পাবলিক ফাংশন __ কনস্ট্রাক্ট (\ ম্যাজেন্টো \ সেন্টিমিটার \ মডেল \ পেজ ফ্যাক্টরি $ পেজ ফ্যাক্টরি)
{
    $ এই-> পেজফ্যাক্টরি = $ পেজ ফ্যাক্টরি;
}

পাবলিক ফাংশন কিছুসংক্ষেপ ()
{
    ...
    $ পৃষ্ঠা = $ এটি-> পৃষ্ঠা ফ্যাক্টরি-> তৈরি ();
    ...
}

আপনাকে যা করতে হবে তা হল কনস্ট্রাক্টরে কাঙ্ক্ষিত মডেলের কারখানাটি জিজ্ঞাসা করা ask আপনি Magento বা সংকলক চালানোর সময় এটি স্বয়ংক্রিয়ভাবে উত্পন্ন হবে।


11

আপনি এটি এর মতো করতে পারেন:

$model = $this->_objectManager->create('Full\Model\Class\Name\Here');

তবে আপনাকে নিশ্চিত করতে হবে যে _objectManager সদস্যের উপস্থিতি ।

বেশিরভাগ ক্লাসে এটি হওয়া উচিত, তবে এটি নির্মাণকারীর মধ্যে এটি ইনজেকশন না দিলে। এটার মত:

protected $_objectManager;
public function __construct(
   ...,
   \Magento\Framework\ObjectManager $objectManager,
   ....
){
    ....
    $this->_objectManager= $objectManager;
    ....
}

[এক বছর পরে সম্পাদনা করুন]
উপরের উত্তরটি কার্যকর হলেও, এটি সর্বোত্তম অনুশীলন নয়। এটি করার সঠিক উপায়ের জন্য অ্যান্টনের উত্তর দেখুন।


ত্রুটি পেয়েছে - ক্লাস ম্যাজেন্টো \ ফ্রেমওয়ার্ক \ অবজেক্টম্যানেজারের অস্তিত্ব নেই
আনাস মনসুরি

5

টেকনিক্যালি আপনি একটি দৃষ্টান্ত আছে \Magento\Framework\ObjectManagerআপনি কল করতে পারেন createএর getএবং এই আপনি বস্তুর আপনি ইচ্ছা দেব। তবে আপনি এটি নির্মাণের মাধ্যমে নির্ভরতা ইনজেকশনটির দিকে ম্যাজেন্টো 2 শিফট হিসাবে ব্যবহার করতে চান তা নির্ভর করে ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.