No lo hagas
¡Esto es como usar ObjectManager::getInstance()->create()
una plantilla!
Utilice un Bloque personalizado que reciba el ayudante como una dependencia del constructor y agregue un método proxy que llame al método auxiliar.
En la plantilla:
$block->customMethod()
En el bloque:
public function __construct(Path/To/Helper/Class $helperClass, ...other dependencies...)
{
$this->helper = $helperClass;
// ...other assignments and call to parent::__construct()
}
public function customMethod()
{
return $this->helper->customMethod();
}
En el principio de OOP, esto evita violar la "Ley de Demeter". Encapsula la lógica de negocios en el bloque en lugar de la plantilla. Como efecto secundario, también hace que la lógica sea más comprobable a medida que la lógica se mueve al bloque.
Con respecto a la lógica puesta en las clases de ayuda, encuentro que en Magento 2 los ayudantes tienen más sentido para los servicios, como algo que no es un modelo, pero contiene código reutilizable, por ejemplo, el formato de precios (que está contenido en el núcleo, pero puedo No piense en un mejor ejemplo en este momento).
di.xml
tipo de clase de bloques, no guardo alguna configuración de diseño. Intenté, por ejemplo, hacerlo para la clase\Magento\Catalog\Block\Product\View\Type\Simple
, la plantilladefault.phtml
que se utilizó en nuestra plantilla se ignora. No tengo idea de por qué en este momento