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

讨论程序使用中的问题
回复
angellcawn
帖子: 200
注册时间: 2013年 12月 6日 11:01
来自: https://www.typecho.wiki
联系:

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

帖子 angellcawn »

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

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

请大神给个实现思路 (●˘◡˘●)
头像
DT27
帖子: 83
注册时间: 2016年 2月 23日 19:48
联系:

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('参数名')
angellcawn
帖子: 200
注册时间: 2013年 12月 6日 11:01
来自: https://www.typecho.wiki
联系:

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

帖子 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
QQ截图20160603214623.png (11.79 KiB) 查看 5901 次
头像
DT27
帖子: 83
注册时间: 2016年 2月 23日 19:48
联系:

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

帖子 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方法。
回复