Third party module Block:
Path: app\code\Amasty\Storelocator\Block\View\Attributes.php
<?php /** * @author Amasty Team * @copyright Copyright (c) 2021 Amasty (https://www.amasty.com) * @package Amasty_Storelocator */ namespace Amasty\Storelocator\Block\View; use Magento\Framework\View\Element\Template; /** * Class Attributes */ class Attributes extends Template { /** * Show attributes * * @return string */ public function toHtml() { if (!$this->getLocationAttributes()) { return ''; } return parent::toHtml(); } public function getLocationAttributes() { //logger $writer = new \Zend\Log\Writer\Stream(BP . '/var/log/log1.log'); $logger = new \Zend\Log\Logger(); $logger->addWriter($writer); $logger->info($this->getLocation()->getAttributes()); return $this->getLocation()->getAttributes(); } }
log file return values
Try to call getLocationAttributes() in my custom module,
Path : app\code\Zero\Storelocator\Block\Customerreview.php
<?php namespace Zero\Storelocator\Block; use Amasty\Storelocator\Model\ConfigProvider; class Customerreview extends \Magento\Framework\View\Element\Template { protected $helper; protected $_amastyconfigProvider; public function __construct( \Amasty\Storelocator\Block\view\Attributes $attributes, \Magento\Framework\View\Element\Template\Context $context, \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig, \Amasty\Storelocator\Block\View\Attributes $myValue, \Amasty\Storelocator\Block\View\Location $myValue1, ConfigProvider $amastyConfigProvider, array $data = [] ) { $this->_attributes = $attributes; $this->scopeConfig = $scopeConfig; $this->_amastyconfigProvider = $amastyConfigProvider; parent::__construct($context, $data); } protected function _prepareLayout() { parent::_prepareLayout(); } public function getCustomerReview(){ $authentication = $this->scopeConfig->getValue('customerreview/general/review_auth', \Magento\Store\Model\ScopeInterface::SCOPE_STORE); $accountId = $this->scopeConfig->getValue('customerreview/general/review_account_id', \Magento\Store\Model\ScopeInterface::SCOPE_STORE); // try to print values from third party module $writer = new \Zend\Log\Writer\Stream(BP . '/var/log/fin.log'); $logger = new \Zend\Log\Logger(); $logger->addWriter($writer); $logger->info(print_r($this->_attributes->getLocationAttributes())); // print the values $authorization = "Authorization:".$authentication; $url = 'https://mybusiness.googleapis.com/v4/accounts/'.$accountId.'/locations/123456789/reviews'; $ch = curl_init(); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json' , $authorization )); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_TIMEOUT, 10); $output = curl_exec($ch); $allData = json_decode($output, TRUE); // You will get all the data return $allData; } }
I am getting following error:
Error: Call to a member function getAttributes() on null in C:\xampp\htdocs\m3\app\code\Amasty\Storelocator\Block\View\Attributes.php:39
39th line -> $logger->info($this->getLocation()->getAttributes());
How to solve this error, i want to get my third party module function values to my custom module?
Hi @Aveeva ,
Could you please replace your custom block code with below code and check
class Customerreview extends \Magento\Framework\View\Element\Template
{
protected $helper;
protected $_amastyconfigProvider;
protected $storeAttributes;
public function __construct(
\Amasty\Storelocator\Block\view\Attributes $storeAttributes,
\Magento\Framework\View\Element\Template\Context $context,
\Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig,
ConfigProvider $amastyConfigProvider,
array $data = []
) {
$this->storeAttributes = $storeAttributes,
$this->scopeConfig = $scopeConfig;
$this->_amastyconfigProvider = $amastyConfigProvider;
parent::__construct($context, $data);
}
protected function _prepareLayout()
{
parent::_prepareLayout();
}
public function getCustomerReview(){
$authentication = $this->scopeConfig->getValue('customerreview/general/review_auth', \Magento\Store\Model\ScopeInterface::SCOPE_STORE);
$accountId = $this->scopeConfig->getValue('customerreview/general/review_account_id', \Magento\Store\Model\ScopeInterface::SCOPE_STORE);
// try to print values from third party module
$writer = new \Zend\Log\Writer\Stream(BP . '/var/log/fin.log');
$logger = new \Zend\Log\Logger();
$logger->addWriter($writer);
$logger->info(print_r($this->storeAttributes->getLocationAttributes())); // print the values
$authorization = "Authorization:".$authentication;
$url = 'https://mybusiness.googleapis.com/v4/accounts/'.$accountId.'/locations/123456789/reviews';
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json' , $authorization ));
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
$output = curl_exec($ch);
$allData = json_decode($output, TRUE); // You will get all the data
return $allData;
}
}Hope this helps you!
Problem Solved! Click Kudos & Accept as Solution!