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