By accessing the website and accepting the Cookie Policy, you agree to use the cookies provided by the Site in accordance with to analyze traffic, remember your preferences, and optimize your experience.
October CMS - 快速入门 18 - 创建联系表单
2018-10-24 13:21:56    171    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 - 为组件添加选项

171 人读过
文档导航