ম্যাজেন্টো 2 পিএইচটিএমএলে কোনও ব্লক ফাংশন কীভাবে কল করবেন


32

আমি কীভাবে কোনও পিএইচটিএমএলে কোনও ব্লক ফাংশন বলতে পারি? উদাহরণস্বরূপ, যদি আমি আমার কাস্টম ব্লক ফাংশনটিকে প্রোডাক্ট list.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>';
    }
}

তারপরে যে কোনও পিএইচটিএমএল ফাইলে আপনি এই ব্লকটির পদ্ধতি পেতে নিম্নলিখিত কোডগুলি ব্যবহার করতে পারেন।

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

আশা করি এটি আপনাকে সহায়তা করবে।


মনোমুগ্ধকর মতো কাজ করা, আপনাকে ধন্যবাদ
হাফিজ আরসলান

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
@ আশিষমাদঙ্কর ম্যাজেন্টো 1 এর $this->myMethod()জন্য, এটি ম্যাজেন্টো 2 এর জন্য$block->myMethod()
রাফেল

@ রাফেলাতডিজিটালপিয়ানিজম আমি যে কোনও পিএইচটিএমএলতে আমার কাস্টম ব্লক ফাংশনটি কল করতে চাই, মূলত আমার প্রশ্নটি আমি কীভাবে আমার ব্লকের যে কোনও ব্লকের জন্য তৈরি করতে পারি।
আরশাদ এম

বিন্যাস ফাইলটিতে আপনার ব্লকটি টেম্পলেট.ফ্টটিএমএলকে অর্পণ করতে হবে। তারপরে আপনি কেবল পিটিএইচটিএমএলে নিজের ফাংশনটি কল করতে পারবেন।
আমান শ্রীবাস্তব

0

আপনার ব্লক ফাইলটিকে আপনার মডিউল / ব্লক / আপনার_ব্লক_ফিল.পিএপিপি এর মূল ডিরেক্টরিতে রাখুন ফোল্ডার এবং ফাইলের জন্য ব্যবহারকারীর প্রথম মূল অক্ষরে অক্ষর)।

অ্যাপ্লিকেশান / কোড / তোমার / মডিউল / ব্লক / 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');
    }
}

তারপরে আপনার ব্লক ফাইলটি টেমপ্লেটের সাথে / সীমান্ত / বিন্যাস / আপনার_ফাইল.এক্সএমএল ফাইলের সাথে সংযুক্ত করুন যা আপনি ব্লক ফাইলটি সংজ্ঞায়িত করেছেন

অ্যাপ্লিকেশন / কোড / আপনার / মডিউল / ভিউ / ফ্রন্টএন্ড / লেআউট / আপনার_ফিল.এক্সএমএল (আপনি जर রুটস.এক্সএমএল ব্যবহার করছেন তবে নিশ্চিত হয়ে নিন যে আপনার ফাইলের নাম অবশ্যই প্রাক্তন নামের মতো থাকতে হবে_আপনার নাম_কন্ট্রোলারফোল্ডার_ফিলইউডারকন্ট্রোলারফোল্ডার.এক্সএমএল)

    <?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>

তারপরে অ্যাপ্লিকেশন / কোড / আপনার / মডিউল / ভিউ / ফ্রন্টএন্ড / টেম্পলেট / আপনার_টেম্পলেট.ফটিএমএলে আপনার টেম্পলেট ফাইলটি সংজ্ঞায়িত করুন

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

এটি কীভাবে আপনি টেমপ্লেট ফাইলে ব্লক ফাংশনগুলিতে কল করতে পারেন

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