October CMS - 快速入门 18 - 创建联系表单
2018-10-24 13:21:56    149    0    0
emengweb

邮件设置: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('[email protected]', '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>

测试


上一篇: October CMS - 快速入门 19 - 表单验证

下一篇: October CMS - 快速入门 17 - 为组件添加选项

149 人读过
文档导航