Можно ли использовать $this->helper(...) в файлах phtml?
Вопрос об использовании $this->helper(...)
в файлах phtml:
- Он возвращает что-то вроде этого:
ObjectManager->get(...) (Singleton)
- Я знаю, что плохая практика использовать диспетчер объектов phtml, но технически это не прямое использование диспетчера объектов.
Позволяет ли это использовать его?
Проведя некоторое исследование, я вижу:
Диспетчер объектов следует использовать только на заводах, а затем вводить в конструктор. Преимущество использования этого заключается в меньшем количестве кода писать. Но это не делает его нормальным. Тот факт, что это все еще используется в ядре, объясняется тем, что оно еще не было переработано. Я надеюсь, что так и будет.
Это в ответ на использование \Magento\Framework\App\ObjectManager::getInstance()
специально для вас. Для $this->helper()
это кажется более неясным. Magento, похоже, все еще использует это в своем ядре.
1 answers
Использование $this->helper() не рекомендуется, если вместо этого вы должны использовать модель представления (хотя некоторые основные файлы все еще используют ее). Даже использование $это не рекомендуется в PHTML, следует использовать $блок.
Использование модели представления - лучший способ https://devdocs.magento.com/guides/v2.4/extension-dev-guide/view-models.html#when-to-use-view-models
Вы можете ввести класс, который хотите использовать в PHTML, и создать для этого общедоступный метод получения класс
Magento рассматривает даже помощников как анти-шаблон https://devdocs.magento.com/guides/v2.4/ext-best-practices/extension-coding/common-programming-bp.html#avoid-creating-helper-classes