TP6 模板方式静态化

1.建议该方法放在BaseController中,方便全局调用

 //静态模板生成目录
    protected $staticHtmlDir = "";
    //静态文件
    protected $staticHtmlFile = "";

  /**
     * 判断是否存在静态
     *
     * @param string $key 静态文件名称,传入,方便出问题时候查看
     * @param string $index 静态文件存放一级文件夹
     */
    public function beforeBuild($key = "",$index = "index") {
        //生成静态
        $this->staticHtmlDir = "html".DS.$index.DS;
        //静态文件存放地址
        $this->staticHtmlFile = $this->staticHtmlDir . $key .'.html';

        //目录不存在,则创建
        if(!file_exists($this->staticHtmlDir)){
            mkdir($this->staticHtmlDir, 0777, true);
            chmod($this->staticHtmlDir, 0777);
        }

        //静态文件存在,并且没有过期
        if(file_exists($this->staticHtmlFile) && filectime($this->staticHtmlFile)>=time()-60*60*24*5) {
            header("Location:/" . $this->staticHtmlFile);
            exit();
        }

    }

    /**
     * 开始生成静态文件
     * 
     * @param $html
     */
    public function afterBuild($html) {
        if(!empty($this->staticHtmlFile) && !empty($html)) {
            if(file_exists($this->staticHtmlFile)) {
                \unlink($this->staticHtmlFile);
            }
            if(file_put_contents($this->staticHtmlFile,$html)) {
                header("Location:/" . $this->staticHtmlFile);
                exit();
            }
        }
    }

2. Controller 中调用

class Index extends BaseController
{
    public function index()
    {
        //判断静态界面是否存在
        $this->beforeBuild("mobile_index", "mobile");
        $template = 'template/mobile/default/' . $this->request->controller() . '/index.html';
        // TODO 需要填入的模板数据
        $noticeList = [];
        View::assign('noticeList', $noticeList);

        $html = View::fetch($template);
        //生成静态界面
        $this->afterBuild($html);

        return $html;
    }
}

3.生成的静态文件地址:public/html/

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值