邮件设置:config/mail.php;设置为smtp。
创建插件Contact
打开编辑器,在contact插件目录下创建components目录,并在目录下创建表单文件:ContactForm.php
定义组件
File:plugins\raiseinfo\contact\components\ContactForm.php <?php namespace Raiseinfo\Contact\Components; use Cms\Classes\ComponentBase; class ContactForm extends ComponentBase { public function componentDetails() { // TODO: Implement componentDetails() method. return [ 'name' => 'Contact Form', 'description' => 'Simple contact form' ]; } }
File:pluginsraiseinfocontactPlugin.php
<?php namespace Raiseinfo\Contact; use System\Classes\PluginBase; class Plugin extends PluginBase { public function registerComponents() { return [ 'Raiseinfo\Contact\Components\ContactForm' => 'contactform', ]; } public function registerSettings() { } }
增加新页面:
查看页面前端,确认已经生效,只是插件没有定义htm,所以没有内容可以显示。
下面编辑表单内容:
File:plugins\raiseinfo\contact\components\contactform\default.htm <form action="" class="form-group"> <label for="">姓名:</label> <input type="text" name="name" class="form-control"> <label for="">邮件地址:</label> <input type="text" name="email" class="form-control"> <label for="">信息:</label> <textarea name="content" id="" cols="30" rows="10" class="form-control"></textarea> <button type="submit" class="btn btn-success form-control">发送</button> </form>
实现功能:
上面的表单没有功能,甚至都没有设置表单提交的目标是什么,现在首先实现表单提交的方法:
File:plugins\raiseinfo\contact\components\ContactForm.php <?php namespace Raiseinfo\Contact\Components; use Cms\Classes\ComponentBase; use Illuminate\Support\Facades\Input; use Illuminate\Support\Facades\Mail; class ContactForm extends ComponentBase { public function componentDetails() { return [ 'name' => 'Contact Form', 'description' => 'Simple contact form' ]; } public function onSend() { $vars = [ 'name' => Input::get('name'), 'email' => Input::get('email'), 'content' => Input::get('content') ]; // views/mail/message/htm Mail::send('raiseinfo.contact::mail.message', $vars, function($message) { $message->to('tian5258@gmail.com', 'Admin Person'); $message->subject('从联系人表单提交的邮件'); }); } }
其中'raiseinfo.contact::mail.message'是邮件模板,我们需要创建邮件模板目录及文件,结构如下:
plugins\raiseinfo\contact\views plugins\raiseinfo\contact\views\mail plugins\raiseinfo\contact\views\mail\message.htm
编辑模板:
File:plugins\raiseinfo\contact\views\mail\message.htm <p> You got a new message from {{ name }} at {{ email }} </p> <strong> Message </strong> <p> {{ content }} </p>
最后修改form的action,这里我们采用data方法
File: plugins\raiseinfo\contact\components\contactform\default.htm <form data-request="onSend"> <label>姓名:</label> <input type="text" name="name" class="form-control"> <label>邮件地址:</label> <input type="email" name="email" class="form-control"> <label>信息:</label> <textarea name="content" class="form-control"></textarea> <button type="submit" class="btn btn-success form-control">发送</button> </form>
测试