พยายามพัฒนาบางอย่างด้วย magento 2 แต่ฉันไม่พบวิธีเรียกใช้ Helper ในไฟล์ template (.phtml)
ฉันต้องการเปลี่ยนรหัสด้านล่าง:
$this->helper('modulename/helpername')->methodname();หากใครรู้โปรดช่วยฉัน
พยายามพัฒนาบางอย่างด้วย magento 2 แต่ฉันไม่พบวิธีเรียกใช้ Helper ในไฟล์ template (.phtml)
ฉันต้องการเปลี่ยนรหัสด้านล่าง:
$this->helper('modulename/helpername')->methodname();หากใครรู้โปรดช่วยฉัน
คำตอบ:
คุณไม่ควรใช้การโทรของผู้ช่วยเหลือโดยตรงในเทมเพลต 
ให้ผู้ช่วยอินสแตนซ์ของคุณจัดเตรียมไว้เพื่ออ้างอิงกับบล็อกที่สร้างเท็มเพลตและสร้างวิธีการในบล็อกของคุณที่เรียกผู้ช่วยและเรียกเมธอดนั้นในเทมเพลต  
บล็อกของคุณมีการกำหนดเช่นนี้
protected $helperData;
public function __construct(
     ....
    \{Vendor}\{Module}\Helper\Data $helperData,
    ....
) {
    ....
    $this->helperData = $helperData;
    ....
}
public function doSomething()
{
    return $this->helperData->doSomething();
}จากนั้นคุณสามารถโทรหาในเทมเพลตของคุณ $block->doSomething()
คุณต้องใช้สิ่งนี้:
$helper = $this->helper('{Vendor}\{Module}\Helper\Data');
$values = $helper->YourHelperMethod();คุณต้องเขียนชื่อคลาสทั้งหมดในตัวช่วยดังนี้
$this->helper('vendorename\modulename\Helper\helpername')คุณสามารถใช้มันในไฟล์ phtml โดยใช้รหัสด้านบน
ฉันใช้รหัสนี้ในหนึ่งในโมดูลของฉัน
เปลี่ยน Custommodule เป็น NameSpace (ชื่อ บริษัท ของคุณ) เปลี่ยน Review ให้เป็น (ชื่อโมดูลของคุณ)
ใน /var/www/html/magento2/app/code/Custommodule/ReviewRating/Block/HomehorizontalWidget.php
   <?php
namespace Custommodule\ReviewRating\Block;
class HomehorizontalWidget extends \Magento\Framework\View\Element\Template
{
protected $_helper;
public function __construct(
    \Magento\Framework\View\Element\Template\Context $context,
    array $data = [],
    \Custommodule\ReviewRating\Helper\Data $helper
) {
    parent::__construct($context, $data);
    $this->_helper = $helper;
}
public function getEnable(){
        return $this->_helper->getEnable();
    }
}ใน /var/www/html/magento2/app/code/Custommodule/ReviewRating/view/frontend/templates/homehorizontalwidget.phtml
 <?php  echo $block->getEnable(); ?>ใน /var/www/html/magento2/app/code/Custommodule/ReviewRating/Helper/Data.php
<?php 
namespace Custommodule\ReviewRating\Helper;
class Data extends \Magento\Framework\App\Helper\AbstractHelper { 
    /** * @var \Magento\Framework\App\Config\ScopeConfigInterfac 
        */ 
    protected $_scopeConfig; 
    CONST ENABLE = 'reviewrating/general/enable_module'; 
    public function __construct( \Magento\Framework\App\Helper\Context $context, 
            \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig ) {
             parent::__construct($context); $this->_scopeConfig = $scopeConfig;
    }
    public function getEnable(){
        return $this->_scopeConfig->getValue(self::ENABLE);
    }
}ใน /var/www/html/magento2/app/code/Custommodule/ReviewRating/etc/adminhtml/system.xml
system configuration labels created here ลองรหัสนี้ในบล็อกของคุณ:
protected $helperData;
public function __construct(
     ....
    \{Vendor}\{Module}\Helper\Data $helperData,
    ....
) {
    ....
    $this->helperData = $helperData;
    ....
}
public function getHelper()
{
    return $this->helperData;
}และในแม่แบบของคุณคุณสามารถโทร:
$helper = $block->getHelper();