Magento 2 phtml में किसी भी ब्लॉक फ़ंक्शन को कैसे कॉल करें


32

मैं किसी भी phtml में किसी भी ब्लॉक फ़ंक्शन को कैसे कह सकता हूं? उदाहरण के लिए यदि मैं उत्पाद सूची में अपने कस्टम ब्लॉक फ़ंक्शन को कॉल करना चाहता हूं।

जवाबों:


56

ऐसे में कोशिश करें।

पूर्व के लिए आपका ब्लॉक वर्ग है

<?php
namespace Company\Helloworld\Block;
use Magento\Framework\View\Element\Template;

class Main extends Template
{
    public function getMyCustomMethod()
    {
        return '<b>I Am From MyCustomMethod</b>';
    }
}

फिर किसी भी phtml फ़ाइल में आप इस ब्लॉक की विधि प्राप्त करने के लिए निम्न कोड का उपयोग कर सकते हैं।

<?php
$blockObj= $block->getLayout()->createBlock('Company\Helloworld\Block\Main');
echo $blockObj->getMyCustomMethod();
?>

आशा है कि यह आपकी मदद करता है।


एक आकर्षण की तरह काम कर रहा है, धन्यवाद u
हाफिज अर्सलान

6

यदि टेम्पलेट ब्लॉक से जुड़ा हुआ है, उदाहरण के लिए:

<block class="Vendor\Module\Block\Name" name="name" template="Vendor_Module::name.phtml"/>

और आपके पास एक सार्वजनिक विधि है myMethod()जिसे Vendor\Module\Block\Nameआप निम्न में परिभाषित कर सकते हैं name.phtml:

$block->myMethod();

@ राफेल है $block->myMethod(); या $this->myMethod(); ?
आशीष मदनकर एम 2 प्रोफेशन

4
Magento 1 के लिए @AishishMadankar 1 $this->myMethod(), Magento 2 के लिए यह$block->myMethod()
डिजिटल पियानोवाद पर राफेल

@RaphaelatDigitalPianism मैं किसी भी phtml में अपने कस्टम ब्लॉक फ़ंक्शन को कॉल करना चाहता हूं, मूल रूप से मेरा सवाल यह है कि मैं अपने किसी भी ब्लॉक के लिए $ myBlock ऑब्जेक्ट कैसे बना सकता हूं।
अरशद एम

आपको अपने ब्लॉक को लेआउट फ़ाइल में template.phtml पर असाइन करना होगा। तब केवल आप phtml में अपने स्वयं के फ़ंक्शन को कॉल कर सकते हैं।
अमन श्रीवास्तव

0

अपने मॉड्यूल /Block/Your_block_file.php(remember उपयोगकर्ता फ़ोल्डर और फ़ाइल के लिए पहला पत्र) की जड़ निर्देशिका में अपने ब्लॉक फ़ाइल रखें।

ऐप्स / कोड / आपका / मॉड्यूल / ब्लॉक / Your_block_file.php

 <?php

namespace Your\Module\Block;

class Your_block_file extends \Magento\Framework\View\Element\Template
{
    /**
     * @param \Magento\Backend\Block\Template\Context $context
     * @param \Magento\Framework\Registry             $registry
     * @param \Magento\Framework\Data\FormFactory     $formFactory
     * @param array                                   $data
     */
    public function __construct(
        \Magento\Backend\Block\Template\Context $context,
        \Magento\Framework\Data\FormFactory $formFactory,
        array $data = []
    )
    {
        parent::__construct($context, $data);
    }

    /**
     * Get form action URL for POST booking request
     *
     * @return string
     */
    public function getFormAction()
    {
        die('Hello World');
    }
}

फिर अपनी ब्लॉक फाइल को टेम्पलेट / व्यूएंड / लेआउट / your_file.xml फ़ाइल से लिंक करें जिसे आपने ब्लॉक फाइल परिभाषित किया है

ऐप / कोड / आपका / मॉड्यूल / दृश्य / दृश्य / लेआउट / your_file.xml (यदि आप मार्गों का उपयोग कर रहे हैं। xml सुनिश्चित करें कि आपकी फ़ाइल का नाम पूर्व के लिए जैसा होना चाहिए। frontname_controllerFolder_FileUnerControlerFolder.xml)

    <?xml version="1.0"?>
<page layout="1column" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <head>
        <title>{Page Title</title>
    </head>
    <body>
        <referenceContainer name="content">
            <block class="Your/Module/Block/Your_block_file" name="gridpage.form" template="Your_Module:: your_template.phtml"/>
        </referenceContainer>
    </body>
</page>

फिर ऐप / कोड / अपने / मॉड्यूल / दृश्य / दृश्य / टेम्पलेट / your_template.phtml में अपनी टेम्पलेट फ़ाइल को परिभाषित करें

<?= $block->getFormAction(); ?>

आप टेम्पलेट फ़ाइल में ब्लॉक कार्यों को कैसे कॉल कर सकते हैं

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.