五月 24

【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 这将让你的工作事半功倍同时也让你的项目更容易维护代码更具有可读性。

本文网址:http://nan.im/blog/1251 转载需注明出处!
This site is licensed under a Creative Commons BY-NC-SA 3.0 License.
本站使用 创作共用版权协议 转载本站内容也必须遵循"署名-非商业性使用-相同方式共享"的共同创作协议。

文章评论:

  1. fffffff 说道:

    感謝!找了好久的

  2. jquery插件研究 说道:

    不太明白~~没用过drupal

    Drupal 是目前世界上最优秀的开源 CMS 系统和 jQuery 结合的也非常好

 

发表评论:

NOTICE: You should type some Chinese Word in your comment to pass the spam-check, thanks !

小提示:请务必填写正确的邮箱地址(推荐 QQ 邮箱)以便能及时收到我的回复,另未包含中文的评论将被过滤!



Themed by anyLiv. Copyright © 2010. Some right reserved.