@seanbreeden Извините, я проголосовал, но забыл принять.
Гаурав Агравал
Ответы:
30
Вы не должны использовать вспомогательные вызовы непосредственно в шаблоне.
Предоставьте свой экземпляр помощника в качестве зависимости от блока, который отображает шаблон, и создайте в своем блоке метод, который вызывает помощника и вызывает этот метод в шаблоне.
Не могли бы вы объяснить, в чем будет проблема, если мы вызовем помощника в шаблоне напрямую, без определения зависимости
Прашант Валанда
это не хорошая практика. Это вводит необъявленную зависимость. Если вы хотите сделать это правильно, вы должны вызывать в шаблоне только методы из блока, который его отображает.
Мариус
2
Основной magento разработчик также вызвал помощника непосредственно в phtml файле
Prashant Valanda
2
Это не делает это правильно. Возможно, эта часть еще не подверглась рефакторингу
Marius
1
Краткий ответ: да. Длинный ответ: у вас не должно быть помощника с 10 методами, и все они необходимы для одного и того же блока. Если это произойдет, возможно, вам стоит подумать о рефакторинге вашего кода в меньшие блоки и шаблоны.
Ответы:
Вы не должны использовать вспомогательные вызовы непосредственно в шаблоне.
Предоставьте свой экземпляр помощника в качестве зависимости от блока, который отображает шаблон, и создайте в своем блоке метод, который вызывает помощника и вызывает этот метод в шаблоне.
Определите ваш блок следующим образом
Тогда вы можете позвонить в свой шаблон
$block->doSomething()
источник
Вы должны использовать как это:
источник
Вам нужно написать полное имя класса в помощнике, как показано ниже:
Вы можете использовать его в файле phtml, используя приведенный выше код
источник
Измените Custommodule на NameSpace (название вашей компании), измените ReviewRating на (Your Module Name)
В
/var/www/html/magento2/app/code/Custommodule/ReviewRating/Block/HomehorizontalWidget.php
В
/var/www/html/magento2/app/code/Custommodule/ReviewRating/view/frontend/templates/homehorizontalwidget.phtml
В
/var/www/html/magento2/app/code/Custommodule/ReviewRating/Helper/Data.php
В
/var/www/html/magento2/app/code/Custommodule/ReviewRating/etc/adminhtml/system.xml
источник
Попробуйте этот код в своем блоке:
А в вашем шаблоне вы можете позвонить:
источник