移动端控制器

如果在创建插件的时候勾选了是否需要功能入口,则在插件创建成功后会默认生成一个MobileController控制器,用于处理移动端各项功能。

首先我们需要在插件信息文件info.php配置插件移动端页面的入口:

  1. 'config' => array(
  2. 'entry' => 1,
  3. 'entry_list' => array(
  4. 'index' => '留言板首页'
  5. ),
  6. ),

然后在插件管理后台封面入口设置页面为功能入口设置触发关键词。当用户在微信端输入的消息触发了此处设置的关键词,微信会回复一条单图文消息,点击单图文消息即可进入对应的移动端页面。

接下来我们就可以编辑移动端控制器来实现各项移动端的功能,我们在MobileController.class.php中可以这样编码:

  1. <?php
  2. namespace Addons\IdouGuestbook\Controller;
  3. use Mp\Controller\MobileBaseController;
  4. /**
  5. * 留言板移动端控制器
  6. * @author 艾逗笔<765532665@qq.com>
  7. */
  8. class MobileController extends MobileBaseController {
  9. /**
  10. * 留言板首页
  11. * @author 艾逗笔<765532665@qq.com>
  12. */
  13. public function index() {
  14. $settings = get_addon_settings('IdouGuestbook');
  15. $settings['share_title'] || $settings['share_title'] = '留言板';
  16. $settings['share_desc'] || $settings['share_desc'] = '点击进来给我留言吧';
  17. $settings['share_cover'] || $settings['share_cover'] = 'http://'.C('HTTP_HOST') . '/Public/Admin/img/nopic.jpg';
  18. $this->assign('settings', $settings);
  19. $map['status'] = 1;
  20. $map['mpid'] = get_mpid();
  21. $page = max(1, intval(I('p')));
  22. $count = M('idou_guestbook_list')->where($map)->count();
  23. $per = $settings['per'] ? $settings['per'] : 10;
  24. $page_count = ceil($count/$per);
  25. $show['page_count'] = $page_count;
  26. $show['page'] = $page;
  27. if ($page < $page_count) {
  28. $show['next_page_url'] = create_addon_url('index', array('p'=>($page+1)));
  29. }
  30. if ($page > 1) {
  31. $show['prev_page_url'] = create_addon_url('index', array('p'=>($page-1)));
  32. }
  33. $message_list = M('idou_guestbook_list')->where($map)->order('create_time desc')->page($page, $per)->select();
  34. foreach ($message_list as $k => &$v) {
  35. $v['fans_info'] = get_fans_info($v['openid']);
  36. }
  37. $this->assign('fans_info', get_fans_info());
  38. $this->assign('message_list', $message_list);
  39. $this->assign('show', $show);
  40. $this->display();
  41. }
  42. /**
  43. * 处理留言
  44. * @author 艾逗笔<765532665@qq.com>
  45. */
  46. public function deal_message() {
  47. $GuestbookList = D('Addons://IdouGuestbook/IdouGuestbookList');
  48. C('TOKEN_ON', false);
  49. if (!$GuestbookList->create()) {
  50. $return['errcode'] = 0;
  51. $return['errmsg'] = $GuestbookList->getError();
  52. } else {
  53. if (I('id')) {
  54. $GuestbookList->save();
  55. } else {
  56. $GuestbookList->add();
  57. }
  58. $return['errcode'] = 1;
  59. $return['errmsg'] = '留言成功';
  60. }
  61. $return['data'] = I('post.');
  62. $this->ajaxReturn($return);
  63. }
  64. }
  65. ?>

其中index方法用于展示留言板首页,并通过get_addon_settings函数调用插件的配置参数,通过M方法查询数据表把留言数据输出到视图页展示。

deal_message方法用于处理用户发布的留言。调用了模型进行数据处理。处理成功后,通过ajax返回结果到前端。