नियंत्रक Magento 2 में सभी बच्चों को ब्लॉक कैसे प्राप्त करें?


जवाबों:


7

सुनिश्चित करें कि आपका नियंत्रक वही है जो उस लेआउट को लोड करता है जिसमें आपका ब्लॉक और उसका बच्चा ब्लॉक बाहर निकलता है।

Magento \ Backend \ App \ Action \ Context का उपयोग करें;
Magento \ Framework \ View \ Result \ PageFactory का उपयोग करें;

वर्ग संपादित करें \ Magento \ Backend \ App \ Action का विस्तार करता है
{
  संरक्षित $ resultPageFactory;

  सार्वजनिक समारोह __construct (
       प्रसंग $ संदर्भ,
       PageFactory $ resultPageFactory
  ) {
       $ ये-> resultPageFactory = $ resultPageFactory;
       माता-पिता :: __ निर्माण ($ संदर्भ);
  }

  $ resultPage = $ this-> resultPageFactory-> create ();

  $ blockInstance = $ resultPage-> getLayout () -> getBlock ('your.block.name');

  $ चाइल्डब्लॉक = $ ब्लॉक इनस्टांस-> getChildNames ();

  foreach ($ blockName के रूप में $ चाइल्डब्लॉक) {
    $ ब्लॉक = $ resultPage-> getLayout () -> getBlock ($ blockName);
  }

}

1
अच्छा जवाब के साथ सरस।
राकेश जेसादिया

यह मेरे लिए ठीक काम कर रहा है धन्यवाद @ अमित सिंह
धर्मेंद्र जादव

@AmitSingh, कृपया समझाएं, $blockInstance->getChildNames();यहाँ getChildNames () का अर्थ है?
पायल पटेल

0

आप इस तरह से सभी बाल ब्लॉक प्राप्त कर सकते हैं।

$allblocks = $block->getChildNames();

  foreach($allblocks as $blocks){
    $child_block = $this->resultPageFactory->create()->getLayout()->getBlock($blocks);
  }

मैंने वह सभी फंक्शन आजमाए हैं जो चाइल्ड ब्लॉक लेने के लिए उपयोग किए जाते हैं लेकिन यह काम नहीं कर रहा है।
धर्मेंद्र जादव
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.