TP中JS如何获取模板变量(示例详解)

广告:宝塔Linux面板高效运维的服务器管理软件 点击【 https://www.bt.cn/p/uNLv1L 】立即购买

TP中JS如何获取模板变量(示例详解)

下面thinkphp框架教程栏目将给大家介绍PHP框架中JS优雅获取模板变量的方式,希望对需要的朋友有所帮助!

在使用PHP框架(本文以ThinkPHP为例)进行页面开发的时候,经常遇到需要将控制器方法中的模板变量代入到页面JS内操作的情况,常见的方式如:

  let admin={:json_encode($admin)},  //$admin是php数组      level={$level};    console.log(admin, level);
登录后复制

这种方式确实是可以取到值的,只是存在几个问题

模板变量的语法放在js中,编辑器会报语法错误当采用编辑器的自动格式化功能时,模板变量的声明结构会被破坏,从而影响了自动格式化代码功能的使用不够美观

在实践中比较推荐的方式是:将模板变量存到特定的节点中,然后由全局方法将其转成全局的变量,最后需要用到这些变量的方法再读取这些全局变量。下面以一个完整的模板为例:

<!DOCTYPE html>  <html lang ="en">  <head>   <meta charset="UTF-8">   <title>PHP框架中JS优雅获取模板变量的方式</title>   <style>   /* 通用的模板数据存放标签,视觉不可见 */   .data-box {        display: none;    }   </style>  </head>  <body>  <!-- 页面内容 -->  <h2>Hi,结果请看console</h2>  <!-- 数据存储节点,可以同时存在多个data属性 -->  <!-- 如果模板变量是数组,须先转成json字符串(如$admin) -->  <div class="data-box" data-admin='{:json_encode($admin)}' data-level='{$level}'></div>      <script>    /* 获取数据的操作 */     /* 初始化页面渲染时传过来的js变量 */   let dataContainerElem = document.querySelector('.data-box'),       data = dataContainerElem ? dataContainerElem.dataset : {},       dataBox = {}; //模板变量容器,`.data-box`类选择器所在的所有`data`属性值集合      Object.keys(data).forEach(function (key) {        dataBox[key] = data[key];        if (isJsonString(data[key])) dataBox[key] = JSON.parse(data[key]); //是json格式的字串才转对象    });     /**    * 判断字串是否属于json字串    */   function isJsonString(str) {       let flag = false;         if (typeof str != 'string') return flag;         try {           JSON.parse(str);           flag = true;       } catch (e) {}         return flag;    }  </script>    <script>    /* 使用数据 */   //所有保存到数据节点的变量都成为`dataBox`对象的属性    console.log(dataBox.admin, dataBox.level);  </script>  </body>  </html>
登录后复制

实际开发中,我会将这里的css和获取数据的js操作放置在全局的母模板中,然后具体的子模板只要继承了母模板就可以使用该功能,方便代码的复用。

推荐:《最新的10个thinkphp视频教程》

以上就是TP中JS如何获取模板变量(示例详解)的详细内容,更多请关注9543建站博客其它相关文章!

广告:SSL证书一年128.66元起,点击购买~~~

9543建站博客
一个专注于网站开发、微信开发的技术类纯净博客。

作者头像
admin创始人

肥猫,知名SEO博客站长,14年SEO经验。

上一篇:PHP安全防护:防止URL跳转漏洞
下一篇:php如何实现微信小程序支付及退款

发表评论

关闭广告
关闭广告