邮件设置: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>
测试