Jak mogę wywołać dowolną funkcję bloku w dowolnym phtml? Na przykład, jeśli chcę wywołać moją niestandardową funkcję bloku w liście produktów.phtml?
32
Spróbuj tak
Na przykład twoja klasa bloków to
<?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>';
}
}
następnie w dowolnym pliku phtml możesz użyć następującego kodu, aby uzyskać metodę tego bloku.
<?php
$blockObj= $block->getLayout()->createBlock('Company\Helloworld\Block\Main');
echo $blockObj->getMyCustomMethod();
?>
Mam nadzieję, że to ci pomoże.
Jeśli szablon jest połączony z blokiem, na przykład:
I masz
myMethod()
zdefiniowaną metodę publicznąVendor\Module\Block\Name
, możesz wywołać następujące wname.phtml
:źródło
$block->myMethod();
OR$this->myMethod();
?$this->myMethod()
, dla Magento 2 it$block->myMethod()
Umieść plik bloku w katalogu głównym modułu /Block/Your_block_file.php(remember pierwszej użytkownika dużej litery dla folderu i pliku).
App / Code / Your / Module / Block / Your_block_file.php
Następnie połącz plik bloku z szablonem w pliku view / frontend / layout / your_file.xml, który zdefiniowałeś plik bloku
App / Code / Your / Module / view / frontend / layout / your_file.xml (jeśli używasz trasy.xml upewnij się, że nazwa twojego pliku musi być taka sama jak np. Frontname_controllerFolder_FileUnderControlerFolder.xml)
Następnie Zdefiniuj plik szablonu w App / Code / Your / Module / view / frontend / templates / your_template.phtml
Tak można wywoływać funkcje blokowania w pliku szablonu
źródło