magento 2에서 무언가를 개발하려고 시도했지만 template (.phtml) 파일에서 Helper 메소드를 호출하는 방법을 찾지 못했습니다.
아래 코드를 대체하고 싶습니다.
$this->helper('modulename/helpername')->methodname();
아는 사람이 있으면 도와주세요.
magento 2에서 무언가를 개발하려고 시도했지만 template (.phtml) 파일에서 Helper 메소드를 호출하는 방법을 찾지 못했습니다.
아래 코드를 대체하고 싶습니다.
$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 (회사 이름)로 변경 ReviewReating (을 모듈 이름)으로 변경
에 /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();