ThinkPHP 解决模板文件大小写问题

以前使用TP3.1时,没有注意$this->display()默认解析的模板文件大小问题。现在使用TP3.2,在windows下开发没什么毛病,昨晚放在测试服务器上(阿里云CentOS LAMP),竟然报找不到模板文件错误。我的情况是:

  • windows下define(‘APP_DEBUG’, true) ‘URL_CASE_INSENSITIVE’ =>true。没问题。
  • windows下define(‘APP_DEBUG’, true) ‘URL_CASE_INSENSITIVE’ =>false。没问题。
  • windows下define(‘APP_DEBUG’, false) ‘URL_CASE_INSENSITIVE’ =>true。没问题。
  • windows下define(‘APP_DEBUG’, false) ‘URL_CASE_INSENSITIVE’ =>false。没问题。
  • linux下define(‘APP_DEBUG’, true) ‘URL_CASE_INSENSITIVE’ =>true。报错找不到模板文件。
  • linux下define(‘APP_DEBUG’, true) ‘URL_CASE_INSENSITIVE’ =>false。报错找不到模板文件。
  • linux下define(‘APP_DEBUG’, false) ‘URL_CASE_INSENSITIVE’ =>true。报错找不到模板文件。
  • linux下define(‘APP_DEBUG’, false) ‘URL_CASE_INSENSITIVE’ =>false。报错找不到模板文件。

试了网上说的各种(主要是在Application和ThinkPHP中修改URL_CASE_INSENSITIVE),对我都没用。就暂时在控制器中搜索所有$this->display(),改为$this->display(__FUNCTION__)。删除Application/Runtime。算是暂时用着。

然后开始找资料,论坛上有人提供了修改ThinkPHP中parseTemplate()的代码,但是我复制 粘贴后报语法错误,然后开始注意ThinkPHP/Library/Think/View.class.php的display()方法。

display()方法中调用了fetch()方法来解析获取模板内容,fetch()方法中调用了parseTemplate()方法来获取模板文件,parseTemplate()方法中通过$template = CONTROLLER_NAME . $depr . ACTION_NAME;来处理模板文件名为空(即display()放参数为空)下的定位规则,看到这儿,猜测ACTION_NAME是导致模板文件找不到的原因,在controller中var_dump(ACTION_NAME),果然是小写的。
ThinkPHP/Library/Think/View.class.php/display()

ThinkPHP/Library/Think/View.class.php/fetch()

ThinkPHP/Library/Think/View.class.php/parseTemplaate()

然后在ThinkPHP中找到ACTION_NAME的定义,ThinkPHP/Library/Think/Dispatcher.class.php的dispatch()通过define(‘ACTION_NAME’, self::getAction($varAction));定义了ACTION_NAME的值,getAction()中通过return strip_tags(strtolower($action));的strtolower()把得到的操作/方法名转为小写返回了,把strtolower删了。

ThinkPHP/Library/Think/Dispatcher.class.php/dispatch()

ThinkPHP/Library/Think/View.class.php/getAction()

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 写微信小程序后端需要以下几个步骤: 1. 环境搭建:需要搭建 PHP 环境,安装 ThinkPHP 框架,以及安装微信开发者工具。 2. 注册小程序:在微信公众平台注册小程序,获取小程序的 AppID 和 AppSecret,用于后续开发中的身份验证和 API 调用。 3. 配置接口:在微信公众平台中配置小程序的接口信息,包括接口地址、Token、EncodingAESKey 等信息。 4. 开发 API:根据小程序需求,设计并开发相应的 API 接口,可以使用 ThinkPHP 提供的 RESTful API 快速搭建。 5. 身份验证:在开发 API 的过程中,需要对请求进行身份验证,确保只有授权的用户可以访问相应的 API。 6. 数据库操作:使用 ThinkPHP 提供的数据库操作接口,对数据库进行增、删、改、查等操作。 7. 返回数据:在 API 接口的实现中,需要将查询到的数据返回给小程序端。可以使用 JSON 格式或其他格式。 8. 调试和部署:在开发过程中,需要进行调试和测试。当测试通过后,可以将代码部署到服务器上,供小程序调用。 总的来说,使用 ThinkPHP 开发微信小程序后端,需要掌握 PHP 开发技术和数据库操作技术,并熟悉微信小程序开发的流程和接口调用方式。 ### 回答2: thinkphp是一款基于PHP语言开发的MVC框架,用于构建Web应用程序。如果我们想要使用thinkphp来开发微信小程序的后端,我们可以按照以下思路进行: 1. 搭建开发环境:首先,我们需要在本机搭建PHP开发环境,并安装thinkphp框架。可以使用XAMPP、WAMP或者LAMP等工具来搭建环境,并从thinkphp官方网站下载最新版本的框架。 2. 创建项目和模块:在thinkphp框架中,我们可以使用命令行工具或者手动创建来创建一个新的项目。然后,我们可以根据微信小程序的需求,创建相应的控制器、模型和视图等模块。 3. 配置数据库连接:在thinkphp的配置文件中,我们需要配置数据库连接信息,以便于在后端与数据库进行交互。可以在配置文件中设置数据库的类型、主机地址、数据库名、用户名和密码等。 4. 数据库操作:利用thinkphp提供的ORM(对象关系映射)功能,我们可以通过定义模型类来简化与数据库的交互。可以使用模型中提供的方法来进行数据的增删改查操作,以及数据的关联查询等。 5. 接口开发:对于微信小程序与后端的交互,我们可以定义相应的接口来处理前端的请求。通过接口,前端可以发送HTTP请求到后端,并传递相应的参数。后端可以根据接口进行数据的处理和逻辑的操作,并返回相应的结果给前端。 6. 接口权限验证:在微信小程序中,我们可以使用微信提供的登录机制来获取用户的OpenID,并将其作为用户的唯一标识。在后端接口中,我们可以通过验证用户的OpenID来进行接口权限的控制,确保只有合法的用户才能访问接口。 7. 数据返回格式化:在后端的接口开发过程中,我们需要将数据以统一的格式返回给前端。可以使用thinkphp提供的返回格式封装函数,将数据封装成JSON格式并返回给前端。 总之,使用thinkphp开发微信小程序的后端需要通过搭建开发环境、创建项目和模块、配置数据库连接、数据库操作、接口开发、接口权限验证等步骤。这样,我们就可以基于thinkphp框架来实现微信小程序的后端逻辑和数据交互。 ### 回答3: thinkphp是一款开源的PHP框架,适用于快速开发Web应用程序。如果要使用thinkphp来开发微信小程序的后端,可以按照以下思路进行: 1. 配置环境:首先,确保服务器上已经安装了PHP环境,并下载、安装好thinkphp框架,同时要确保安装了与微信小程序交互的SDK。 2. 数据库设计:根据小程序的需求,设计好数据库的表结构,包括用户表、数据表等。 3. 创建控制器:根据业务逻辑,在thinkphp中创建相应的控制器文件,用于处理来自小程序前端的请求。 4. 实现接口:在控制器中实现与小程序前端交互的接口,包括用户登录、数据查询、数据添加、数据更新等功能。可以使用thinkphp提供的数据库查询方法、数据验证、数据过滤等函数。 5. 用户验证:在接口中实现用户登录验证的逻辑,可以通过小程序前端传递的用户标识进行验证,并同时保存用户信息到数据库中。 6. 数据交互:通过接口,实现小程序前端与后台的数据交互。可以使用thinkphp提供的数据返回函数,将查询到的数据以JSON格式返回给小程序前端。 7. 安全性考虑:在小程序后端开发过程中,需要考虑数据的安全性。可以使用thinkphp的安全函数对接收到的数据进行过滤,避免SQL注入等安全问题。 8. 错误处理:在接口中,加入错误处理机制,对可能出现的错误进行捕获和处理,并返回相应的错误信息给小程序前端。 9. 日志记录:使用thinkphp提供的日志记录功能,对后端的运行情况进行记录,以便后期的排查和调试。 总之,使用thinkphp开发微信小程序的后端,需要根据小程序的需求进行数据库设计,创建相应的控制器文件,实现接口以及相应的业务逻辑,并加入相应的安全性考虑和错误处理机制,以确保小程序后端的稳定性和安全性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值