Answers:
尝试这样。
例如,您的积木类是
<?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();
?>
希望这对您有所帮助。
如果模板链接到块,例如:
<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();
吗?
$this->myMethod()
,代表Magento 2$block->myMethod()
将您的阻止文件放置在模块/Block/Your_block_file.php的根目录中(记住,用户的第一个大写字母代表文件夹和文件)。
应用/代码/您的/模块/块/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文件中将您的块文件与模板链接
应用/代码/您的/模块/视图/前端/布局/您的file.xml(如果您使用的是route.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(); ?>
这就是您可以在模板文件中调用Block函数的方式