Thinkphp框架开发移动端接口(2)


Posted in PHP onAugust 18, 2016

接着上一篇介绍Thinkphp框架开发移动端接口(1),另外我们还可以通过ThinkPHP实现移动端访问自动切换主题模板,这样也可以做到移动端访问

ThinkPHP的模板主题机制,如果只是在PC,只要需修改 DEFAULT_THEME (新版模板主题默认是空,表示不启用模板主题功能)配置项就可以方便的实现多模板主题切换。

但对于移动端和PC端,也许你会设计完全不同的主题风格,且针对不同的来路提供不同的渲染方式,其中一种比较流行的方法是“响应式设计”,但就本人经历而言,要实现完全的“响应式设计”并不是那么容易,且解决兼容问题也是个难题,假设是大型站点,比如:淘宝、百度、拍拍这些,响应式设计肯定是满足不了需求的,而是需要针对手机访问用户提供单独的手机网站。

ThinkPHP 完全可以实现,而且相当简单。和TPM的智能模版切换引擎一样,只要对来路进行判断处理即可。

1、将 ismobile() 加入到{项目/Common/common.php}

function ismobile() {
 // 如果有HTTP_X_WAP_PROFILE则一定是移动设备
 if (isset ($_SERVER['HTTP_X_WAP_PROFILE']))
 return true;
 
 //此条摘自TPM智能切换模板引擎,适合TPM开发
 if(isset ($_SERVER['HTTP_CLIENT']) &&'PhoneClient'==$_SERVER['HTTP_CLIENT'])
 return true;
 //如果via信息含有wap则一定是移动设备,部分服务商会屏蔽该信息
 if (isset ($_SERVER['HTTP_VIA']))
 //找不到为flase,否则为true
 return stristr($_SERVER['HTTP_VIA'], 'wap') ? true : false;
 //判断手机发送的客户端标志,兼容性有待提高
 if (isset ($_SERVER['HTTP_USER_AGENT'])) {
 $clientkeywords = array(
  'nokia','sony','ericsson','mot','samsung','htc','sgh','lg','sharp','sie-','philips','panasonic','alcatel','lenovo','iphone','ipod','blackberry','meizu','android','netfront','symbian','ucweb','windowsce','palm','operamini','operamobi','openwave','nexusone','cldc','midp','wap','mobile'
 );
 //从HTTP_USER_AGENT中查找手机浏览器的关键字
 if (preg_match("/(" . implode('|', $clientkeywords) . ")/i", strtolower($_SERVER['HTTP_USER_AGENT']))) {
  return true;
 }
 }
 //协议法,因为有可能不准确,放到最后判断
 if (isset ($_SERVER['HTTP_ACCEPT'])) {
 // 如果只支持wml并且不支持html那一定是移动设备
 // 如果支持wml和html但是wml在html之前则是移动设备
 if ((strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') !== false) && (strpos($_SERVER['HTTP_ACCEPT'], 'text/html') === false || (strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') < strpos($_SERVER['HTTP_ACCEPT'], 'text/html')))) {
  return true;
 }
 }
 return false;
 }

2、在{项目/Lib/}创建一个 CommonAction.php,如果你的项目已公共控制器,则无需创建,直接加在里面即可。

Class CommonAction extends Action{
 Public function _initialize(){
 //移动设备浏览,则切换模板
 if (ismobile()) {
  //设置默认默认主题为 Mobile
  C('DEFAULT_THEME','Mobile');
 }
 //............你的更多代码.......
 }
 }

通过以上2种方式均可实现移动端访问,一种是原生,一种是伪原生,小伙伴们根据自己的项目需求来选择吧。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
浅谈Windows下 PHP4.0与oracle 8的连接设置
Oct 09 PHP
杏林同学录(七)
Oct 09 PHP
php 表单数据的获取代码
Mar 10 PHP
php的ajax简单实例
Feb 27 PHP
PHP图像处理之使用imagecolorallocate()函数设置颜色例子
Nov 19 PHP
php基于Snoopy解析网页html的方法
Jul 09 PHP
php项目中百度 UEditor 简单安装调试和调用
Jul 15 PHP
yii2中使用Active Record模式的方法
Jan 09 PHP
PHP简单创建压缩图的方法
Aug 24 PHP
PHP设计模式之状态模式定义与用法详解
Apr 02 PHP
使用laravel的migrate创建数据表的方法
Sep 30 PHP
Laravel等框架模型关联的可用性浅析
Dec 15 PHP
Thinkphp框架开发移动端接口(1)
Aug 18 #PHP
PHP Ajax JavaScript Json获取天气信息实现代码
Aug 17 #PHP
PHP文件下载实例代码浅析
Aug 17 #PHP
PHP Ajax实现无刷新附件上传
Aug 17 #PHP
Ajax PHP JavaScript MySQL实现简易无刷新在线聊天室
Aug 17 #PHP
全面解析PHP验证码的实现原理 附php验证码小案例
Aug 17 #PHP
针对多用户实现头像上传功能PHP代码 适用于登陆页面制作
Aug 17 #PHP
You might like
《忧国的莫里亚蒂》先导宣传图与STAFF公开
2020/03/04 日漫
教你IIS6的PHP最佳配置方法
2006/09/05 PHP
PHP汉字转换拼音的函数代码
2015/12/30 PHP
laravel Validator ajax返回错误信息的方法
2019/09/29 PHP
PHP如何通过带尾指针的链表实现'队列'
2020/10/22 PHP
可以用来调试JavaScript错误的解决方案
2010/08/07 Javascript
Dreamweaver jQuery智能提示插件,支持版本提示,支持1.6api
2011/07/31 Javascript
JavaScript栏目列表隐藏/显示简单实现
2013/04/03 Javascript
JavaScript异步编程Promise模式的6个特性
2014/04/03 Javascript
jQuery构造函数init参数分析
2015/05/13 Javascript
js创建数组的简单方法
2016/07/27 Javascript
在vue中使用v-bind:class的选项卡方法
2018/09/27 Javascript
让 babel webpack vue 配置文件支持智能提示的方法
2019/06/22 Javascript
linux环境下安装pyramid和新建项目的步骤
2013/11/27 Python
python通过colorama模块在控制台输出彩色文字的方法
2015/03/19 Python
介绍Python中内置的itertools模块
2015/04/29 Python
基于python的字节编译详解
2017/09/20 Python
Python正则表达式知识汇总
2017/09/22 Python
pandas pivot_table() 按日期分多列数据的方法
2018/11/16 Python
解决pandas .to_excel不覆盖已有sheet的问题
2018/12/10 Python
python 实现创建文件夹和创建日志文件的方法
2019/07/07 Python
python常见字符串处理函数与用法汇总
2019/10/30 Python
Python3变量与基本数据类型用法实例分析
2020/02/14 Python
Python使用configparser库读取配置文件
2020/02/22 Python
如何在django中实现分页功能
2020/04/22 Python
Python中有几个关键字
2020/06/04 Python
HTML5安全介绍之内容安全策略(CSP)简介
2012/07/10 HTML / CSS
城市规划毕业生求职信
2013/10/10 职场文书
服务行业个人求职的自我评价
2013/12/12 职场文书
公司活动邀请函
2014/01/24 职场文书
阳光体育活动实施方案
2014/05/25 职场文书
党的群众路线教育实践活动个人批评与自我批评
2014/10/16 职场文书
高一军训决心书
2015/02/05 职场文书
2015年公司后勤管理工作总结
2015/05/13 职场文书
导游词之日月潭
2019/11/05 职场文书
安装Ruby和 Rails的详细步骤
2022/04/19 Ruby