Намагаюся розробити щось в magento 2. Але я не знайшов, як викликати метод Helper у файлі шаблону (.phtml).
Я хочу замінити код нижче:
$this->helper('modulename/helpername')->methodname();
Якщо хтось знає, будь ласка, допоможіть мені.
Намагаюся розробити щось в magento 2. Але я не знайшов, як викликати метод Helper у файлі шаблону (.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 (назва вашої компанії), змініть ReviewRating на (назва вашого модуля)
В /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();