Как я могу вызвать любую функцию блока в любом phtml? Например, если я хочу вызвать свою функцию пользовательского блока в product list.phtml?
32
Попробуй вот так.
Например, ваш класс блоков
<?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();
?>
Надеюсь, это поможет вам.
Если шаблон связан с блоком, например:
И у вас есть открытый метод
myMethod()
определен вVendor\Module\Block\Name
вы можете вызвать следующееname.phtml
:источник
$block->myMethod();
ИЛИ$this->myMethod();
?$this->myMethod()
, для Magento 2 это$block->myMethod()
Поместите файл блока в корневую директорию вашего модуля /Block/Your_block_file.php (вспомните первую заглавную букву пользователя для папки и файла).
App / код / Ваш / модуль / блок / Your_block_file.php
Затем свяжите свой файл блока с шаблоном в файле view / frontend / layout / your_file.xml, который вы определили файл блока
App / Code / Your / Module / view / frontend / layout / your_file.xml (если вы используете route.xml, убедитесь, что имя вашего файла должно быть таким же, как для ex. Frontname_controllerFolder_FileUnderControlerFolder.xml)
Затем определите файл шаблона в приложении / Код / Ваш / Модуль / Просмотр / Внешний интерфейс / Шаблоны / Ваш_template.phtml.
Вот как вы можете вызывать функции блокировки в файле шаблона.
источник