系统学习magento二次开发,推荐小册:《Magento中文全栈二次开发 》
本小册面向Magento2以上版本,书代码及示例兼容magento2.0-2.4版本。涵盖了magento前端开发,后端开发,magento2主题,magento2重写,magento2 layout,magento2控制器,magento2 block等相关内容,带领您成为magento开发技术专家。
步骤1:在以下路径创建博客文件“索引.php”
app/code/Vendor/Extension/Block/Index
然后添加代码,如下所示
<?php namespace Vendor\Extension\Block\Index; class Index extends \Magento\Framework\View\Element\Template { public function __construct(\Magento\Catalog\Block\Product\Context $context, array $data = []) { parent::__construct($context, $data); } protected function _prepareLayout() { return parent::_prepareLayout(); } }
步骤 2:在以下路径创建控制器文件“索引.php”
app/code/Vendor/Extension/Controller/Index
然后添加以下代码片段
<?php namespace Vendor\Extension\Controller\Index; class Index extends \Magento\Framework\App\Action\Action { public function execute() { $this->_view->loadLayout(); $this->_view->getLayout()->initMessages(); $this->_view->renderLayout(); } }
第 3 步:在以下路径创建控制器文件.php
app/code/Vendor/Extension/Controller/Index/Post.php
然后添加以下代码片段
<?php namespace Vendor\Extension\Controller\Index; use Magento\Store\Model\StoreManagerInterface; class Post extends \Magento\Framework\App\Action\Action { protected $_inlineTranslation; protected $_transportBuilder; protected $_scopeConfig; protected $_logLoggerInterface; protected $storeManager; public function __construct( \Magento\Framework\App\Action\Context $context, \Magento\Framework\Controller\Result\JsonFactory $resultJsonFactory, \Magento\Framework\Translate\Inline\StateInterface $inlineTranslation, \Magento\Framework\Mail\Template\TransportBuilder $transportBuilder, \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig, \Psr\Log\LoggerInterface $loggerInterface, StoreManagerInterface $storeManager, array $data = [] ) { $this->_inlineTranslation = $inlineTranslation; $this->_transportBuilder = $transportBuilder; $this->_scopeConfig = $scopeConfig; $this->_logLoggerInterface = $loggerInterface; $this->messageManager = $context->getMessageManager(); $this->storeManager = $storeManager; parent::__construct($context); } public function execute() { try { $post = $this->getRequest()->getPost(); // Send Mail $this->_inlineTranslation->suspend(); $sender = [ 'name' => $post['name'], 'email' => $post['email'] ]; $transport = $this->_transportBuilder ->setTemplateIdentifier('customemail_email_template') ->setTemplateOptions( [ 'area' => 'frontend', 'store' => $this->storeManager->getStore()->getId() ] ) ->setTemplateVars([ 'name2' => $post['name'], 'email2' => $post['email'] ]) ->setFromByScope($sender) ->addTo($post['email'],$post['name']) ->getTransport(); $transport->sendMessage(); $this->_inlineTranslation->resume(); $this->messageManager->addSuccess('Email sent successfully'); $this->_redirect('email/index/index'); } catch(\Exception $e){ $this->messageManager->addErrorMessage("Something Went Wrong"); } } }
步骤 4:为以下路径的正面表单显示创建一个“email_index_index.xml”文件
app/code/Vendor/Extension/view/frontend/layout
然后添加以下代码段
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="1column" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd"> <head> <title>Inquiery Form</title> </head> <body> <referenceContainer name="content"> <block class="Vendor\Extension\Block\Index\Index" name="customermail_index_index" template="Vendor_Extension::form.phtml"/> </referenceContainer> </body> </page>
步骤 5:在以下路径创建表单模板“form.phtml”
app/code/Vendor/Extension/view/frontend/templates
现在添加以下代码片段
<form enctype="multipart/form-data" action="<?php echo $block->getBaseUrl().'email/index/post/';?>" name="customemaildata" method="post" id="contactForm-1" data-hasrequired="<?php echo __('* Required Fields') ?>" data-mage-init='{"validation":{}}'> <fieldset class="fieldset"> <div class="field email required"> <label class="label" for="email"> Product Name :-</label> <div class="control"> <select name="name" id="name"> <option value="0">Please Select</option> <option value="1">Product - 1</option> <option value="2">Product - 2</option> <option value="3">Product - 3</option> <option value="4">Product - 4</option> <option value="5">Product - 5</option> </select> </div> </div> <div class="field email required"> <label class="label" for="email">Email:-</label> <div class="control"> <input name="email" id="email" class="input-text" type="email" data-validate="{required:true, 'validate-email':true}"/> </div> </div> </fieldset> <div class="actions-toolbar"> <div class="primary"> <input type="hidden" name="hideit" id="hideit" value="" /> <button type="submit" title="<?php echo __('Submit') ?>" class="action submit primary"> <span><?php echo __('Submit') ?></span> </button> </div> </div> </form>
步骤 6: 在以下路径创建电子邮件模板布局文件“email_templates.xml”
app/code/Vendor/Extension/etc
现在添加以下代码
<?xml version="1.0" encoding="UTF-8"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Email:etc/email_templates.xsd"> <template id="customemail_email_template" label="Email Form" file="customeremail.html" type="html" module="Vendor_Extension" area="frontend"/> </config>
第 7 步:在下面的路径上创建一个电子邮件 html 文件“客户电子邮件.html”
app/code/Vendor/Extension/view/frontend/email
然后附加下面给出的代码
<body style="background:#F6F6F6; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:12px; margin:0; padding:0;"> <div style="background:#F6F6F6; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:12px; margin:0; padding:0;"> <table cellspacing="0" cellpadding="0" border="0" height="100%" width="100%"> <tr> <tr> <td valign="top" colspan="5"> <p style="border:1px solid #E0E0E0; font-size:12px; line-height:16px; margin:0; padding:13px 18px; background:#F9F9F9; text-align:center;"><strong>Product Information</strong></td> </tr> <!-- Method- 1 --> {{depend name}} <tr> <td> <p style="border:1px solid #E0E0E0; font-size:14px; line-height:16px; margin:0; padding:13px 18px; background:#F9F9F9;">product Id :- {{var name}} </p> </td> </tr> {{/depend}} <!-- Method - 1 --> <!-- Method- 2 --> {{if email}} <tr> <td> <p style="border:1px solid #E0E0E0; font-size:14px; line-height:16px; margin:0; padding:13px 18px; background:#F9F9F9;"> {{var email}} if condition</p> </td> </tr> {{/if}} <!-- Method- 2--> <!-- Method- 3 --> {{block class='Magento\\Framework\\View\\Element\\Template' area='frontend' template='Vendor_Extension::productinformation.phtml' name=$name}} <!-- Method- 3 --> </table> </td> </tr> </table> </div> </body>
步骤 8:在以下路径为条件值创建模板文件“productinformation.phtml”
app/code/Vendor/Extension/view/frontend/templates
最后,添加以下代码
<?php switch ($this->getData('name')) { case "0": echo "<tr><td><p style='border:1px solid #E0E0E0; font-size:14px; line-height:16px; margin:0; padding:13px 18px; background:#F9F9F9;'> No Product Selected</p></td></tr>" ; break; case "1": echo "<tr><td><p style='border:1px solid #E0E0E0; font-size:14px; line-height:16px; margin:0; padding:13px 18px; background:#F9F9F9;'> Product 1 Is Selected</p></td></tr>" ; echo "<p> </p>" ; break; case "2": echo "<tr><td><p style='border:1px solid #E0E0E0; font-size:14px; line-height:16px; margin:0; padding:13px 18px; background:#F9F9F9;'> Product 2 Is Selected</p></td></tr>" ; break; case "3": echo "<tr><td><p style='border:1px solid #E0E0E0; font-size:14px; line-height:16px; margin:0; padding:13px 18px; background:#F9F9F9;'> Product 3 Is Selected</p></td></tr>" ; break; case "4": echo "<tr><td><p style='border:1px solid #E0E0E0; font-size:14px; line-height:16px; margin:0; padding:13px 18px; background:#F9F9F9;'> Product 4 Is Selected</p></td></tr>" ; break; case "5": echo "<tr><td><p style='border:1px solid #E0E0E0; font-size:14px; line-height:16px; margin:0; padding:13px 18px; background:#F9F9F9;'> Product 5 Is Selected</p></td></tr>" ; break; default: echo "<tr><td><p style='border:1px solid #E0E0E0; font-size:14px; line-height:16px; margin:0; padding:13px 18px; background:#F9F9F9;'> No Record Found</p></td></tr>" ; }
结论:
通过实施上述步骤,您可以轻松地在Magento 2电子邮件模板中包含条件语句。