ম্যাজেন্টো 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.