typecho模板前台的数据提交到数据库插件

网站前台有个表单,当用户点击提交时将处理表单数据做2个操作:
1、将表单数据发送到指定邮箱(已经实现)
2、调用后台的一个自定义的插件里的方法,将表单数据保存到该插件的表中【这里不知道怎么实现】

插件在后台仅用作对表单数据的编辑,插件见下图:


请大神给个实现思路 (●˘◡˘●)
已邀请:

angellcawn

赞同来自:


网站前台有个表单,当用户点击提交时将处理表单数据做2个操作:
1、将表单数据发送到指定邮箱(已经实现)
2、调用后台的一个自定义的插件里的方法,将表单数据保存到该插件的表中【这里不知道怎么实现】

插件在后台仅用作对表单数据的编辑,插件见下图:


请大神给个实现思路 (●˘◡˘●)

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('参数名')

angellcawn

赞同来自:

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;


网站前端显示界面如图:




QQ截图20160603214623.png (11.79 KiB) 被浏览 2231 次

DT27

赞同来自:

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;


网站前端显示界面如图:
QQ截图20160603214623.png




========================================================================

模板里直接form的post参数写"book/message"就行了。会自动把表单内容提交到postMessage方法。

要回复问题请先登录注册