magento 2 phtmlでブロック関数を呼び出す方法


32

どのようにphtmlのブロック関数を呼び出すことができますか?たとえば、製品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>';
    }
}

次に、任意の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(); OR $this->myMethod();
アシッシュマダンカーM2職業

4
@AshishMadankar Magento 1の$this->myMethod()場合、Magento 2の場合$block->myMethod()
デジタルピアニズムのラファエル

@RaphaelatDigitalPianism任意のphtmlでカスタムブロック関数を呼び出したいのですが、基本的に私の質問は、どのブロックでも$ myBlockオブジェクトを作成する方法です。
アーシャッドM

ブロックをレイアウトファイルのtemplate.phtmlに割り当てる必要があります。その後、phtmlで独自の関数を呼び出すことができるのはあなただけです。
アマンスリバスタバ

0

モジュール/Block/Your_block_file.phpのルートディレクトリにブロックファイルを配置します(フォルダーとファイルの最初の大文字を忘れないでください)。

App / Code / Your / Module / Block / 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');
    }
}

次に、ブロックファイルを定義したview / frontend / layout / your_file.xmlファイル内のテンプレートにブロックファイルをリンクします

App / Code / Your / Module / view / frontend / layout / your_file.xml(routes.xmlを使用している場合は、ファイル名がex。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>

次に、App / Code / Your / Module / view / frontend / templates / your_template.phtmlでテンプレートファイルを定義します

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

テンプレートファイルでブロック関数を呼び出す方法

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.