移动端控制器
如果在创建插件的时候勾选了是否需要功能入口,则在插件创建成功后会默认生成一个MobileController控制器,用于处理移动端各项功能。
首先我们需要在插件信息文件info.php配置插件移动端页面的入口:
'config' => array(
'entry' => 1,
'entry_list' => array(
'index' => '留言板首页'
),
),
然后在插件管理后台封面入口设置页面为功能入口设置触发关键词。当用户在微信端输入的消息触发了此处设置的关键词,微信会回复一条单图文消息,点击单图文消息即可进入对应的移动端页面。
接下来我们就可以编辑移动端控制器来实现各项移动端的功能,我们在MobileController.class.php中可以这样编码:
<?php
namespace Addons\IdouGuestbook\Controller;
use Mp\Controller\MobileBaseController;
/**
* 留言板移动端控制器
* @author 艾逗笔<765532665@qq.com>
*/
class MobileController extends MobileBaseController {
/**
* 留言板首页
* @author 艾逗笔<765532665@qq.com>
*/
public function index() {
$settings = get_addon_settings('IdouGuestbook');
$settings['share_title'] || $settings['share_title'] = '留言板';
$settings['share_desc'] || $settings['share_desc'] = '点击进来给我留言吧';
$settings['share_cover'] || $settings['share_cover'] = 'http://'.C('HTTP_HOST') . '/Public/Admin/img/nopic.jpg';
$this->assign('settings', $settings);
$map['status'] = 1;
$map['mpid'] = get_mpid();
$page = max(1, intval(I('p')));
$count = M('idou_guestbook_list')->where($map)->count();
$per = $settings['per'] ? $settings['per'] : 10;
$page_count = ceil($count/$per);
$show['page_count'] = $page_count;
$show['page'] = $page;
if ($page < $page_count) {
$show['next_page_url'] = create_addon_url('index', array('p'=>($page+1)));
}
if ($page > 1) {
$show['prev_page_url'] = create_addon_url('index', array('p'=>($page-1)));
}
$message_list = M('idou_guestbook_list')->where($map)->order('create_time desc')->page($page, $per)->select();
foreach ($message_list as $k => &$v) {
$v['fans_info'] = get_fans_info($v['openid']);
}
$this->assign('fans_info', get_fans_info());
$this->assign('message_list', $message_list);
$this->assign('show', $show);
$this->display();
}
/**
* 处理留言
* @author 艾逗笔<765532665@qq.com>
*/
public function deal_message() {
$GuestbookList = D('Addons://IdouGuestbook/IdouGuestbookList');
C('TOKEN_ON', false);
if (!$GuestbookList->create()) {
$return['errcode'] = 0;
$return['errmsg'] = $GuestbookList->getError();
} else {
if (I('id')) {
$GuestbookList->save();
} else {
$GuestbookList->add();
}
$return['errcode'] = 1;
$return['errmsg'] = '留言成功';
}
$return['data'] = I('post.');
$this->ajaxReturn($return);
}
}
?>
其中index方法用于展示留言板首页,并通过get_addon_settings函数调用插件的配置参数,通过M方法查询数据表把留言数据输出到视图页展示。
deal_message方法用于处理用户发布的留言。调用了模型进行数据处理。处理成功后,通过ajax返回结果到前端。