【Drupal】后台 PHP 与前端 JavaScript 之间的数据传递

在 Drupal 模块或主题开发中经常会有需要传递一些值给 JavaScript 的情况,大概有几种方法一是可以直接在模板里面写 JavaScript 然后嵌 PHP 进去,也可以用 Drupal 的接口直接输出 JavaScript 到页面的 head 信息中去,其实我自己之前一直是直接在模板里面写 JS 嵌套 PHP 的,后来发现 Drupal 现有的 drupal_add_js 提供了传递变量的接口具体如下……

下面是简单的实现步骤,目的是传递 drupal 的 basePath 给 JavaScript 使用,当然这在 Drupal6 中是已经默认传递的,大家可以举一反三来使用:

//首先是在模块文件或者是主题的 template 文件中加入如下代码:
drupal_add_js(array('basePath' => $GLOBALS['base_path']), 'setting');

//然后你会发现在页面的 script 输出部分会有以下信息输出:
Drupal.extend({ settings:{"basePath": "/drupal/"} });

//这样你就可以在页面引入的 JavaScript 文件中直接调用该对象了如:
alert(Drupal.settings['basePath']);

非常方便主要起作用的是 drupal_add_js 的第二个参数 setting 他告诉 drupal 系统这段 js 是设置类型的数组,其他使用方法请访问 drupal 的线上 api 函数手册。其实在只传递一个变量时这种方法带来的优势并不明显,但如果有若干个模块需要传递多个变量给 JavaScript 的时候 drupal_add_js 函数会自动将他们合并到一起在页面头部输出,只调用一个 Drupal.extend() 方法为 Drupal 对象增加额外的值,也希望大家在写模块或模板的时候尽量遵循 Drupal 提供给我们的现有的 api 这将让你的工作事半功倍同时也让你的项目更容易维护代码更具有可读性。

2 评论

  1. 感謝!找了好久的

    下次请填写真实邮箱地址!

已关闭评论。