thinkphp与pjax结合问题

浏览:1314 发布日期:2017/11/25 分类:求助交流 关键字: 缓存 调试 pjax
使用PJAX可以不用跳转实现不同页面的切换,但在TP项目使用过程中却发现一个致命问题:由于TP会生成模板缓存,而开启layout之后,生成的缓存里面并没有LAYOUT的内容,所以在该页面刷新的时候,就会出现页面显示问题。
举例说:
1、layout内容:<html>
<head>
  <title>demo</title>
  <load src="__PUBLIC__/CSS/style.css"/>
</head>
<body>
  {__CONTENT__}
  <load src="__PUBLIC__/JS/script.js"/>
</body>
</html>
2、我自己封闭了一个页面显示方法        protected function render($tpl)
    {
        if(array_key_exists('HTTP_X_PJAX', $_SERVER) && $_SERVER['HTTP_X_PJAX'])
        {
            $this->display($tpl);
        }else{
            layout("Index/layout");
            $this->display($tpl);
        }
    }
3、需要显示页面的时候,直接调用$this->render();即可。
但除了首页之外,页面缓存的结果是不包含layout的内容,也就是说css和js都不在页面内。在这些页面刷新的时候,由于请求头不包含pjax,就是直接输出页面缓存内容,导致显示安全不对。若不关闭调试模式,就不能使用pjax,不知道还有没有办法解决。
最佳答案
评论( 相关
后面还有条评论,点击查看>>