Не варто.
Це як використовувати ObjectManager::getInstance()->create()
в шаблоні!
Використовуйте користувацький блок, який отримує помічник як залежність від конструктора, і додайте метод проксі, який викликає хелперний метод.
У шаблоні:
$block->customMethod()
У блоці:
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();
}
У принципі ООП говорять, що це дозволяє уникнути порушення "Закону про деметер". Він інкапсулює бізнес-логіку в блоці замість шаблону. Як побічний ефект це також робить логіку більш випробуваною, оскільки логіка переміщується в блок.
Що стосується того, яку логіку вкладають у допоміжні класи, я вважаю, що в Magento 2 помічники мають сенс для сервісів, як щось, що не є моделлю, але містить багаторазовий код, наприклад формат цін (який міститься в ядрі, але я можу зараз не думаю про кращий приклад).
di.xml
для блоків типу класу, не зберігайте деяку конфігурацію макета. Я спробував, наприклад, зробити це для класу\Magento\Catalog\Block\Product\View\Type\Simple
, шаблон,default.phtml
який використовувався в нашому шаблоні, ігнорується. Немає поняття, чому на даний момент