magento 2 cara memanggil fungsi blok apa pun di phtml


32

Bagaimana saya bisa memanggil fungsi blok apa saja di phtml apa saja? Misalnya jika saya ingin memanggil fungsi blok khusus saya di list.phtml produk?

Jawaban:


56

Coba seperti ini.

Misalnya, kelas blok Anda

<?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>';
    }
}

lalu dalam file phtml apa pun Anda dapat menggunakan kode berikut untuk mendapatkan metode blok ini.

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

Semoga ini bisa membantu Anda.


bekerja seperti pesona ,, terima kasih
Hafiz Arslan

6

Jika templat ditautkan ke blok, misalnya:

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

Dan Anda memiliki metode publik yang myMethod()ditentukan di dalam Vendor\Module\Block\NameAnda dapat memanggil yang berikut di name.phtml:

$block->myMethod();

@ Raphael $block->myMethod(); ATAU $this->myMethod(); ?
Ashish Madankar M2 Professiona

4
@AshishMadankar untuk Magento 1 itu $this->myMethod(), untuk Magento 2 itu$block->myMethod()
Raphael di Digital Pianism

@RaphaelatDigitalPianism Saya ingin memanggil fungsi blok khusus saya di phtml apa pun, pada dasarnya pertanyaan saya adalah bagaimana saya bisa membuat objek $ myBlock untuk blok saya.
Arshad M

Anda perlu menetapkan blok Anda ke template.phtml di file tata letak. Maka hanya Anda yang dapat memanggil fungsi Anda sendiri dalam phtml.
Aman Srivastava

0

Tempatkan File blok Anda di direktori root modul /Block/Your_block_file.php Anda (ingat untuk menggunakan huruf kapital pertama untuk folder dan file).

App / Kode / Anda / Modul / Blok / 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');
    }
}

Kemudian tautkan file blok Anda dengan template dalam tampilan / frontend / layout / file_file.xml Anda menentukan file blok

App / Code / Your / Module / view / frontend / layout / your_file.xml (jika Anda menggunakan rute.xml pastikan nama file Anda harus seperti misalnya. Frontname_controllerFolder_FileUnderControlerFolder.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>

Kemudian Definisikan file template Anda di App / Code / Your / Module / view / frontend / templates / your_template.phtml

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

Itulah cara Anda memanggil fungsi Blok dalam file template

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.