ম্যাজেন্টো 1 এর মতো কোনও সহজ উপায় আছে:
$crumbs = Mage::app()->getLayout->getBlock('breadcrumbs');
ম্যাজেন্টো 1 এর মতো কোনও সহজ উপায় আছে:
$crumbs = Mage::app()->getLayout->getBlock('breadcrumbs');
উত্তর:
স্বীকৃত: ম্যাজেন্টো 2 আলফায় জবাব দেয়
আমি এটা যে সহজ ছিল ইচ্ছুক।
এটি নির্ভর করে আপনি এটি কোথা থেকে ইনস্ট্যান্ট করতে চান।
আপনি যদি অন্য একটি ব্লকের ভিতরে থেকে কোনও উদাহরণ তৈরি করতে চান তবে এটি করুন:
$this->getLayout()->createBlock('Full\Block\Class\Name\Here');
একটি নিয়ামকের ভিতরে থেকে এটি করুন:
$this->_view->getLayout()->createBlock('Full\Block\Class\Name\Here');
একটি মডেলের ভিতরে থেকে:
$this->_blockFactory->createBlock('Full\Block\Class\Name\Here');
কিন্তু এখানে একটি ধরা আছে।
আপনাকে মডেলটিতে সুরক্ষিত সদস্য তৈরি করতে হবে এবং কন্সট্রাক্টরের _blockFactory
একটি উদাহরণ ইনজেক্ট \Magento\Framework\View\Element\BlockFactory
করতে হবে এবং এটিকে সদস্যের ভারে নির্ধারণ করতে হবে।
এটার মতো কিছু:
protected $_blockFactory;
public function __construct(
...,
\Magento\Framework\View\Element\BlockFactory $blockFactory,
....
){
....
$this->_blockFactory = $blockFactory;
....
}
কোনও সহায়িকার ভিতরে থেকে কোনও ব্লক ইনস্ট্যান্ট করার জন্য এটি মডেলের মতোই কাজ করে
_view
। এটি ডিফল্টরূপে উপলভ্য হওয়া উচিত, যদিও আমি মনে করি এটি এখন হ্রাস পেয়েছে। আমি এই উত্তরটি 1.5 বছর আগে লিখেছি
_view
এখন নিয়ন্ত্রণকারীগুলিতে হ্রাস করা হয়েছে এবং এটি শীঘ্রই চলে যাবে
একটি ব্লক ইনস্ট্যান্টিয়েট করতে আপনাকে \Magento\Framework\View\LayoutInterface
ক্লাস এবং তার createBlock()
পদ্ধতিটি ব্যবহার করতে হবে
।
কোনও সহায়ক শ্রেণীর সাহায্যে আপনি এই কোডটি দিয়ে এটি করতে পারেন:
namespace Vendor\Module\Helper;
class Data extends \Magento\Framework\App\Helper\AbstractHelper
{
/**
* Layout
*
* @var \Magento\Framework\View\LayoutInterface
*/
protected $_layout;
/**
*
*/
public function __construct(
\Magento\Framework\App\Helper\Context $context,
\Magento\Framework\View\LayoutInterface $layout
) {
$this->_layout = $layout;
parent::__construct($context);
}
/**
* Create new block
*/
public function getBlock() {
$block = $this->_layout
->createBlock('Magento\Framework\View\Element\Template')
->setTemplate('Vendor_Module::helper/block.phtml');
return $block;
}
}
তারপরে $helper->getBlock()
যেখানে আপনার প্রয়োজন সেখানে কল করুন ।