답변:
이렇게 해보십시오.
예를 들어 블록 클래스는
<?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 파일의 템플릿과 블록 파일을 연결하십시오.
App / Code / Your / Module / view / frontend / layout / your_file.xml (route.xml을 사용하는 경우 파일 이름이 예를 들어 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 함수를 호출하는 방법