Techievolve/Greenenquire/Block/Enquire.php
<?php
namespace Techievolve\Greenenquire\Block;
use Magento\Framework\View\Element\Template;
class Enquire extends Template {
/**
* @param Template\Context $context
* @param array $data
*/
public function __construct(Template\Context $context, array $data = []) {
parent::__construct($context, $data);
}
protected function _prepareLayout() {
return parent::_prepareLayout();
}
/**
* Returns action url for Green Enquire
* @return string
*/
public function getFormAction() {
return $this->getUrl('greenenquire/index/enquire', ['_secure' => true]);
}
}
Techievolve/Greenenquire/Controller/Index/Enquire.php
<?php
namespace Techievolve\Greenenquire\Controller\Index;
use Magento\Framework\App\Action\Context;
use Magento\Framework\Translate\Inline\StateInterface;
use Magento\Framework\Mail\Template\TransportBuilder;
use Magento\Framework\Controller\ResultFactory;
use Magento\Framework\App\Config\ScopeConfigInterface;
use Magento\Store\Model\ScopeInterface;
use Techievolve\Greenenquire\Helper\Email;
use Psr\Log\LoggerInterface;
class Enquire extends \Magento\Framework\App\Action\Action {
/**
*email sender constant
*/
const XML_PATH_NAME_SENDER = 'trans_email/ident_general/name';
const XML_PATH_EMAIL_SENDER = 'trans_email/ident_general/email';
/**
*send email to constant
*/
const XML_PATH_NAME_SEND_TO = 'techievolve_greenenquire/green_enquire/send_email_to_name';
const XML_PATH_EMAIL_SEND_TO = 'techievolve_greenenquire/green_enquire/send_email_to';
protected $_inlineTranslation;
protected $_transportBuilder;
protected $_scopeConfig;
protected $_emailHelper;
protected $_logLoggerInterface;
public function __construct(
Context $context,
StateInterface $inlineTranslation,
TransportBuilder $transportBuilder,
ScopeConfigInterface $scopeConfig,
Email $emailHelper,
LoggerInterface $loggerInterface,
array $data = []
){
$this->_inlineTranslation = $inlineTranslation;
$this->_transportBuilder = $transportBuilder;
$this->_scopeConfig = $scopeConfig;
$this->_emailHelper = $emailHelper;
$this->_logLoggerInterface = $loggerInterface;
$this->messageManager = $context->getMessageManager();
parent::__construct($context);
}
public function execute() {
$resultRedirect = $this->resultFactory->create(ResultFactory::TYPE_REDIRECT);
$resultRedirect->setUrl($this->_redirect->getRefererUrl());
$data = $this->getRequest()->getParams();
$postObject = new \Magento\Framework\DataObject();
if ($data) {
try {
/* Receiver Detail */
$receiverInfo = [
'name' => $this->_scopeConfig->getValue(self::XML_PATH_NAME_SEND_TO, ScopeInterface::SCOPE_STORE),
'email' => $this->_scopeConfig->getValue(self::XML_PATH_EMAIL_SEND_TO, ScopeInterface::SCOPE_STORE)
];
/* Sender Detail */
$senderInfo = [
'name' => $this->_scopeConfig->getValue(self::XML_PATH_NAME_SENDER, ScopeInterface::SCOPE_STORE),
'email' => $this->_scopeConfig->getValue(self::XML_PATH_EMAIL_SENDER, ScopeInterface::SCOPE_STORE),
];
/* email code for admin */
$customerName = $data['name'];
$customerEmail = $data['email'];
$customerTelephone = $data['telephone'];
$requestDetail = $data['message'];
$dataAdmin = [
'customer_name' => $customerName,
'customer_email' => $customerEmail,
'customer_telephone' => $customerTelephone,
'request_detail' => $requestDetail
];
$postObject->setData($dataAdmin);
$emailTemplateVariables = ['data' => $postObject];
$this->_emailHelper->sendAdminEmail($emailTemplateVariables,$senderInfo,$receiverInfo);
$this->messageManager->addSuccess('Email sent successfully');
return $resultRedirect;
/* email code for admin end */
} catch(\Exception $e){
$this->messageManager->addError($e->getMessage());
$this->_logLoggerInterface->debug($e->getMessage());
return $resultRedirect;
}
}
}
}
app/code/Techievolve/Greenenquire/etc/adminhtml/menu.xml
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Backend:etc/menu.xsd">
<menu>
<add id="Techievolve_Greenenquire::greenenquire_group" title="Green Enquire" module="Techievolve_Greenenquire" sortOrder="20" resource="Techievolve_Greenenquire::greenenquire" parent="Techievolve_Core::core" />
<add id="Techievolve_Greenenquire::configuration" title="Configuration" module="Techievolve_Greenenquire" sortOrder="10" parent="Techievolve_Greenenquire::greenenquire_group" action="adminhtml/system_config/edit/section/techievolve_greenenquire" resource="Techievolve_Greenenquire::greenenquire"/>
</menu>
</config>
app/code/Techievolve/Greenenquire/etc/adminhtml/system.xml
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Config:etc/system_file.xsd">
<system>
<section id="techievolve_greenenquire" translate="label" type="text" sortOrder="1" showInDefault="1" showInWebsite="1" showInStore="1">
<label>Green Enquire</label>
<tab>techievolve_core</tab>
<resource>Techievolve_Greenenquire::greenenquire</resource>
<group id="green_enquire" translate="label" type="text" sortOrder="1" showInDefault="1" showInWebsite="1" showInStore="1">
<label>Green Enquire Configuration</label>
<field id="send_email_to_name" translate="label" type="text" sortOrder="1" showInDefault="1" showInWebsite="1" showInStore="1" canRestore="1">
<label>Receiver Name</label>
<comment>The email address to which the green enquire request email will be sent</comment>
</field>
<field id="send_email_to" translate="label" type="text" sortOrder="2" showInDefault="1" showInWebsite="1" showInStore="1" canRestore="1">
<label>Receiver Email</label>
<comment>The email address to which the green enquire request email will be sent</comment>
</field>
<field id="email_template_admin" translate="label comment" type="select" sortOrder="3" showInDefault="1" showInWebsite="1" showInStore="1">
<label>Green Enquire Template</label>
<source_model>Magento\Config\Model\Config\Source\Email\Template</source_model>
<!-- This model return all transactional email template list of magento -->
</field>
</group>
</section>
</system>
</config>
app/code/Techievolve/Greenenquire/etc/frontend/routes.xml
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:App/etc/routes.xsd">
<router id="standard">
<route id="greenenquire" frontName="greenenquire">
<module name="Techievolve_Greenenquire" before="Magento_Backend"/>
</route>
</router>
</config>
app/code/Techievolve/Greenenquire/etc/acl.xml
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Acl/etc/acl.xsd">
<acl>
<resources>
<resource id="Magento_Backend::admin">
<resource id="Magento_Backend::stores">
<resource id="Magento_Backend::stores_settings">
<resource id="Magento_Config::config">
<resource id="Techievolve_Greenenquire::greenenquire" title="Techievolve Green Enquire Extension" />
</resource>
</resource>
</resource>
</resource>
</resources>
</acl>
</config>
app/code/Techievolve/Greenenquire/etc/email_templates.xml
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Email:etc/email_templates.xsd">
<template id="techievolve_greenenquire_green_enquire_email_template_admin" label="Admin Email Template" file="green_enquire_admin.html" type="html" module="Techievolve_Greenenquire" area="frontend"/>
</config>
app/code/Techievolve/Greenenquire/etc/module.xml
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
<module name="Techievolve_Greenenquire" setup_version="1.0.0">
</module>
</config>
app/code/Techievolve/Greenenquire/Helper/Email.php
<?php
namespace Techievolve\Greenenquire\Helper;
/**
* Techievolve Greenenquire Email helper
*/
class Email extends \Magento\Framework\App\Helper\AbstractHelper {
const XML_PATH_EMAIL_TEMPLATE_FIELD = 'techievolve_greenenquire/green_enquire/email_template_admin';
/**
* @var \Magento\Framework\App\Config\ScopeConfigInterface
*/
protected $_scopeConfig;
/**
* Store manager
*
* @var \Magento\Store\Model\StoreManagerInterface
*/
protected $_storeManager;
/**
* @var \Magento\Framework\Translate\Inline\StateInterface
*/
protected $inlineTranslation;
/**
* @var \Magento\Framework\Mail\Template\TransportBuilder
*/
protected $_transportBuilder;
/**
* @var string
*/
protected $temp_id;
/**
* @param Magento\Framework\App\Helper\Context $context
* @param Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig
* @param Magento\Store\Model\StoreManagerInterface $storeManager
* @param Magento\Framework\Translate\Inline\StateInterface $inlineTranslation
* @param Magento\Framework\Mail\Template\TransportBuilder $transportBuilder
*/
public function __construct(
\Magento\Framework\App\Helper\Context $context,
\Magento\Store\Model\StoreManagerInterface $storeManager,
\Magento\Framework\Translate\Inline\StateInterface $inlineTranslation,
\Magento\Framework\Mail\Template\TransportBuilder $transportBuilder
) {
$this->_scopeConfig = $context;
parent::__construct($context);
$this->_storeManager = $storeManager;
$this->inlineTranslation = $inlineTranslation;
$this->_transportBuilder = $transportBuilder;
}
/**
* Return store configuration value of your template field that which id you set for template
*
* @param string $path
* @param int $storeId
* @return mixed
*/
protected function getConfigValue($path, $storeId) {
return $this->scopeConfig->getValue($path, \Magento\Store\Model\ScopeInterface::SCOPE_STORE, $storeId);
}
/**
* Return store
*
* @return Store
*/
public function getStore() {
return $this->_storeManager->getStore();
}
/**
* Return template id according to store
*
* @return mixed
*/
public function getTemplateId($xmlPath) {
return $this->getConfigValue($xmlPath, $this->getStore()->getStoreId());
}
/**
* [generateTemplate description] with template file and tempaltes variables values
* @param Mixed $emailTemplateVariables
* @param Mixed $senderInfo
* @param Mixed $receiverInfo
* @return void
*/
public function generateTemplate($emailTemplateVariables,$senderInfo,$receiverInfo) {
$template = $this->_transportBuilder->setTemplateIdentifier($this->temp_id)
->setTemplateOptions(
[
'area' => \Magento\Framework\App\Area::AREA_FRONTEND,
'store' => $this->_storeManager->getStore()->getId(),
]
)
->setTemplateVars($emailTemplateVariables)
->setFrom($senderInfo)
->addTo($receiverInfo['email'],$receiverInfo['name']);
return $this;
}
/**
* [sendInvoicedOrderEmail description]
* @param Mixed $emailTemplateVariables
* @param Mixed $senderInfo
* @param Mixed $receiverInfo
* @return void
*/
/* your send mail method*/
public function sendAdminEmail($emailTemplateVariables,$senderInfo,$receiverInfo) {
$this->temp_id = $this->getTemplateId(self::XML_PATH_EMAIL_TEMPLATE_FIELD);
$this->inlineTranslation->suspend();
$this->generateTemplate($emailTemplateVariables,$senderInfo,$receiverInfo);
$transport = $this->_transportBuilder->getTransport();
$transport->sendMessage();
$this->inlineTranslation->resume();
}
}
app/code/Techievolve/Greenenquire/view/frontend/email/green_enquire_admin.html
<!--@subject {{trans "New Green Enquire Request Received"}} @-->
{{template config_path="design/email/header_template"}}
<p>{{trans "Green Enquire Request Details:"}}</p>
<table class="message-details">
<tr>
<td><b>{{trans "Name :"}}</b></td>
<td>{{var data.customer_name}}</td>
</tr>
<tr>
<td><b>{{trans "Email :"}}</b></td>
<td>{{var data.customer_email}}</td>
</tr>
<tr>
<td><b>{{trans "Phone :"}}</b></td>
<td>{{var data.customer_telephone}}</td>
</tr>
<tr>
<td><b>{{trans "Message :"}}</b></td>
<td>{{var data.request_detail}}</td>
</tr>
</table>
{{template config_path="design/email/footer_template"}}
app/code/Techievolve/Greenenquire/view/frontend/templates/form/enquire.phtml
<?php
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$customerSession = $objectManager->create('Magento\Customer\Model\Session');
if($customerSession->isLoggedIn()) {
$customerName = $customerSession->getCustomer()->getName();
$customerEmail = $customerSession->getCustomer()->getEmail();
}
else{
$customerName = "";
$customerEmail = "";
}
?>
<div class="callnow-btn"><a href="tel:01 811 89 20"><?php echo __('CALL NOW') ?></a></div>
<div class="sidebar-enquire">
<form
class="form enquire"
id="enquire-form"
action="<?= $block->escapeUrl($block->getFormAction()) ?>"
method="post"
data-hasrequired="<?= $block->escapeHtmlAttr(__('* Required Fields')) ?>"
data-mage-init='{"validation":{}}'>
<h5><?php echo __('GO GREEN TODAY ENQUIRE NOW') ?></h5>
<div class="form-group">
<input name="name" id="name" title="<?= $block->escapeHtmlAttr(__('Name')) ?>" value="<?= $customerName ?>" class="form-control input-text" type="text" placeholder="NAME" data-validate="{required:true}"/>
</div>
<div class="form-group">
<input name="email" id="email" title="<?= $block->escapeHtmlAttr(__('Email')) ?>" value="<?= $customerEmail ?>" class="form-control input-text" type="email" placeholder="MAIL" data-validate="{required:true, 'validate-email':true}"/>
</div>
<div class="form-group">
<input name="telephone" id="telephone" title="<?= $block->escapeHtmlAttr(__('Phone Number')) ?>" value="<?= $block->escapeHtmlAttr($this->helper('Magento\Contact\Helper\Data')->getPostValue('telephone')) ?>" class="form-control input-text" type="text" placeholder="Phone Number" data-validate="{required:true, 'validate-number':true}" >
</div>
<div class="form-group">
<textarea name="message" id="message" title="<?= $block->escapeHtmlAttr(__('MESSAGE')) ?>" class="form-control input-text" cols="5" rows="3" data-validate="{required:true}" placeholder="MESSAGE" ><?= $block->escapeHtml($this->helper('Magento\Contact\Helper\Data')->getPostValue('comment')) ?></textarea>
</div>
<div class="btn-group">
<button type="submit" title="<?= $block->escapeHtmlAttr(__('Submit')) ?>" value="SUBMIT" class="btn-submit action submit primary">
<span><?= $block->escapeHtml(__('Submit')) ?></span>
</button>
</div>
</form>
</div>
![]()
0 Comments