搜索
系统检测到您的用户名不符合规范:

tp5多模块下判断PC访问和手机访问的功能

浏览:1393 发布日期:2019年01月16日 分类:用法示例 关键字: tp5多模块下判断PC访问和手机访问的功能
tp5多模块下判断PC访问和手机访问的功能
网站开发时自动识别pc还是mobile,相信这个问题已经很容易解决了,而且tp5框架有自带的识别方法Request->isMobile()但是再做多模块的时候遇到了点问题,下面是我的解决办法,比较简单
说明:
tp5开发多模块网站时用了多级控器index/home.index/index问题
我的模板文件是放在项目下的view文件夹下的,
因为我的模块有前后台,所以我的view下面现在是view/admin,view/home这两个文件夹,现在有一个手机端,如果是按照多级控制器的话,默认会需要我把view/home这文件夹拆分成view/home/default,view/home/mobile,但是我感觉这样有点麻烦,目录层级太深了,所有我的想法是view下分别是admin,home,mobile这三个目录。

解决
多级控制器默认的模板路径会自动解析成home/index/index,这个是根据路由来的,直接是没法改变的
看了模板的fetch()方法后,想到了可以在controller里面继承一个fetch()方法然后重写一下,再模板文件fetch()的时候把home/index/index改成mobile/index/index问题不就解决了吗
下面是代码,一个简单的小方法。public function fetch($template = '', $vars = [], $replace = [], $config = [])
{
$request=$this->request;
if(empty($template)){
$controller= $this->request->controller();
if($request->isMobile()){
$controller=str_replace('Home.','Wap.',$controller);
}
$template = str_replace('.', DS, $controller) . DS . Loader::parseName($request->action(true));
}
$__HOME=$this->request->root(true).'/public/static/'.$request->module().'/home';
if($request->isMobile()){
$__HOME=$this->request->root(true).'/public/static/'.$request->module().'/wap';
}
$replace_ext=[
'__HOME__'=>$__HOME
];
$replace=array_merge($replace,$replace_ext);
return parent::fetch($template, $vars, $replace, $config);
}
收藏
landedaima
积分:2260 等级:LV3
热点推荐
(追記) (追記ここまで)
最新更新

我们

合作

网站

信息

ThinkPHP 是一个免费开源的,快速、简单的面向对象的 轻量级PHP开发框架 ,创立于2006年初,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多的原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进,已经成长为国内最领先和最具影响力的WEB应用开发框架,众多的典型案例确保可以稳定用于商业以及门户级的开发。

AltStyle によって変換されたページ (->オリジナル) /