¿Cómo puedo llamar a cualquier función de bloque en cualquier phtml? Por ejemplo, si quiero llamar a mi función de bloqueo personalizada en la lista de productos.phtml?
32
Intenta así.
Por ejemplo, tu clase de bloque es
<?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>';
}
}
luego, en cualquier archivo phtml, puede usar el siguiente código para obtener el método de este bloque.
<?php
$blockObj= $block->getLayout()->createBlock('Company\Helloworld\Block\Main');
echo $blockObj->getMyCustomMethod();
?>
Espero que esto te ayude.
Si la plantilla está vinculada al bloque, por ejemplo:
Y tiene un método público
myMethod()
definido en elVendor\Module\Block\Name
que puede llamar a lo siguiente enname.phtml
:fuente
$block->myMethod();
O$this->myMethod();
?$this->myMethod()
, para Magento 2 es$block->myMethod()
Coloque su archivo de bloque en el directorio raíz de su módulo /Block/Your_block_file.php (recuerde al usuario la primera letra mayúscula para la carpeta y el archivo).
App / Code / Your / Module / Block / Your_block_file.php
Luego vincule su archivo de bloque con la plantilla en el archivo view / frontend / layout / your_file.xml que definió el archivo de bloque
App / Code / Your / Module / view / frontend / layout / your_file.xml (si está utilizando routes.xml, asegúrese de que el nombre de su archivo debe ser como, por ejemplo, frontname_controllerFolder_FileUnderControlerFolder.xml)
Luego defina su archivo de plantilla en App / Code / Your / Module / view / frontend / templates / your_template.phtml
Así es como puedes llamar a las funciones de bloque en el archivo de plantilla
fuente