网站前台有个表单,当用户点击提交时将处理表单数据做2个操作:
1、将表单数据发送到指定邮箱(已经实现)
2、调用后台的一个自定义的插件里的方法,将表单数据保存到该插件的表中【这里不知道怎么实现】
插件在后台仅用作对表单数据的编辑,插件见下图:
请大神给个实现思路 (●˘◡˘●)
typecho模板前台的数据提交到数据库插件
-
- 帖子: 200
- 注册时间: 2013年 12月 6日 11:01
- 来自: https://www.typecho.wiki
- 联系:
Re: typecho模板前台的数据提交到数据库插件
在插件激活方法activate里创建路由,这样前台表单直接post提交到'/post/message'页面就行了:
然后插件目录新建action.php文件,里面放postMessage方法来处理前台提交的数据。
可以参考我写的这个:https://github.com/DT27/DownloadFile/blob/master/Action.php
获取前台提交的数据可以用:
代码: 全选
// 创建路由
Helper::addRoute('post.message', '/post/message', '插件名_Action', 'postMessage');
然后插件目录新建action.php文件,里面放postMessage方法来处理前台提交的数据。
可以参考我写的这个:https://github.com/DT27/DownloadFile/blob/master/Action.php
获取前台提交的数据可以用:
代码: 全选
$this->request->get('参数名')
-
- 帖子: 200
- 注册时间: 2013年 12月 6日 11:01
- 来自: https://www.typecho.wiki
- 联系:
Re: typecho模板前台的数据提交到数据库插件
DT27 写了:在插件激活方法activate里创建路由,这样前台表单直接post提交到'/post/message'页面就行了:代码: 全选
// 创建路由
Helper::addRoute('post.message', '/post/message', '插件名_Action', 'postMessage');
然后插件目录新建action.php文件,里面放postMessage方法来处理前台提交的数据。
可以参考我写的这个:https://github.com/DT27/DownloadFile/blob/master/Action.php
获取前台提交的数据可以用:代码: 全选
$this->request->get('参数名')
----------------------------------------------------------------------------------------------------------------------------
谢谢,我参照你的插件代码写了,好像还是不行,你帮我看看是不是我哪里错了:
Action.php文件里我增加了一个函数:
代码: 全选
public function postMessage()
{
/** 取出数据 */
$book['name'] = $this->request->get('name');
$book['phone']=$this->request->get('tel');
$book['qq']=$this->request->get('qq');
$book['email']=$this->request->get('email');
$book['address']=$this->request->get('address');
$book['message']=$this->request->get('message');
$book['bdate']=date('y-m-d h:i:s',time());
$book['order'] = $this->db->fetchObject($this->db->select(array('MAX(order)' => 'maxOrder'))->from($this->prefix.'book'))->maxOrder + 1;
/** 插入数据 */
$book['bid'] = $this->db->query($this->db->insert($this->prefix.'book')->rows($book));
}
Plugin.php文件加入了路由:
代码: 全选
// 创建路由
Helper::addRoute('book.message', '/book/message', 'Book_Action', 'postMessage');
我的模板文件中触发该插件的函数如下:
代码: 全选
// 定单提交成功
//记录下表单内容
$post_data = array('name' => $msg_name,
'tel' => $msg_tel,
'qq' => $msg_qq,
'email' => $msg_email,
'address' => $msg_address,
'content' => $msg_content
);
SendPost($siteUrl.'book/message', $post_data);
exit;
网站前端显示界面如图:
Re: typecho模板前台的数据提交到数据库插件
angellcawn 写了:----------------------------------------------------------------------------------------------------------------------------
谢谢,我参照你的插件代码写了,好像还是不行,你帮我看看是不是我哪里错了:
Action.php文件里我增加了一个函数:代码: 全选
public function postMessage()
{
/** 取出数据 */
$book['name'] = $this->request->get('name');
$book['phone']=$this->request->get('tel');
$book['qq']=$this->request->get('qq');
$book['email']=$this->request->get('email');
$book['address']=$this->request->get('address');
$book['message']=$this->request->get('message');
$book['bdate']=date('y-m-d h:i:s',time());
$book['order'] = $this->db->fetchObject($this->db->select(array('MAX(order)' => 'maxOrder'))->from($this->prefix.'book'))->maxOrder + 1;
/** 插入数据 */
$book['bid'] = $this->db->query($this->db->insert($this->prefix.'book')->rows($book));
}
Plugin.php文件加入了路由:代码: 全选
// 创建路由
Helper::addRoute('book.message', '/book/message', 'Book_Action', 'postMessage');
我的模板文件中触发该插件的函数如下:代码: 全选
// 定单提交成功
//记录下表单内容
$post_data = array('name' => $msg_name,
'tel' => $msg_tel,
'qq' => $msg_qq,
'email' => $msg_email,
'address' => $msg_address,
'content' => $msg_content
);
SendPost($siteUrl.'book/message', $post_data);
exit;
网站前端显示界面如图:
========================================================================
模板里直接form的post参数写"book/message"就行了。会自动把表单内容提交到postMessage方法。