前一段时间做了某公司官网外包,其实说是官网,就只有一个静态页面。所以轻松又愉快的就完成了开发,正当要上线之际,甲方突然提出了一个在他们看来一点都不过分的要求:
“能不能在我们官网加一个报名表格,有一个后台可以查看报名数据。”
LZ当时的内心的感觉是:甲方给了小笼包的预算,要做出小龙女的效果,于是我义正言辞的对他说
好的,明天就上线
简直是no zuo no die why you try 为何我这种不会拒绝别人的性格程序员可以一直做外包都没有饿死,自己都想不通。
如果项目本身是WordPress开发的话,可以用插件的方式做表单的提交存储和管理,否则就要自己用PHP来写一套接口存储数据,还要写后台管理页面。分分钟想甩甲方一脸要求加钱,不过后来还是忍住了,因为还好我有第三套方案:leancloud
不开刀,无痛苦,今天做完,明天就上线。
注册登录就略过不说了,登录到leancloud的后台,选择新建一个应用,你会得到一个这样的页面:
左边下划线开头的class都是系统提供的功能,比如用户管理,权限管理,文件管理一类的,我们这个case暂时用不上,就先不提了。
在项目页面引入leancloud的jssdk,我用的是bower的方式,非常的方便。也可以直接引入:
<script src="https://cdn1.lncld.net/static/js/av-core-mini-0.5.4.js"></script>`
然后初始化应用:
AV.initialize(appid,appkey);
在设置页面可以找到appid和appkey
新建一个forms对象:
var Forms = AV.Object.extend("forms");
var formObject = new Forms();
不用在leancloud的后台实现添加forms类,系统会根据提交的数据,自动生成类和字段
在合适的事件下触发存储,以及回调事件:
formObject.save({
name:name,
phone:phone,
email:email,
cooperate:cooperate
}, {
success: function(object) {
alert("感谢您的提交,我们会尽快与您取得联系!");
}
});
提交之后后台就能看到数据了。
为了不让甲方太过怀疑,我特地等了一天才告诉甲方已经开发好了这个功能。甲方表示非常满意,然后问我
可不可以在有人报名的时候邮件通知一下呢?
LZ内心再次一群草泥马呼啸而过,为什么又加了需求,又不给钱,这一次我义正言辞的说:
好的,麻烦再给我一天时间。
我人这么好为什么要做外包,应该去做慈善才对啊,幸好leancloud支持云代码功能
我们创建一个函数,在forms被保存之后触发
query = new AV.Query('forms');
query.get(request.object.id, {
success: function(post) {
var data = {
from: 'Mailgun Sandbox <postmaster@sandboxxxx.mailgun.org>',
to: 'xxx@126.com',
subject: '官网留言信息',
text:"姓名:"+post.attributes.name+"\nE-mail:"+post.attributes.email+"\n电话:"+post.attributes.phone+"\n留言:"+post.attributes.cooperate
};
mailgun.messages().send(data, function (error, body) {
console.log(body);
});
},
error: function(error) {
throw 'Got an error ' + error.code + ' : ' + error.message;
}
});`
用了一下mailgun的邮件服务,顺便提一下,qq邮件对mailgun非常的不友好,分分钟加入黑名单。
然后我又过了一天,告诉甲方通过我艰苦卓绝的努力,终于实现了这个高大上的功能,甲方表示非常开心,直夸我是多快好省的小能手
但是他没有加钱
===========正文完结的分割线===========
如果贵司不是故意要用一个小番茄作为退出按钮的话,那么这就是一个BUG了!
这真是一个毫无意义的八阿哥┑( ̄Д  ̄)┍