【发布时间】:2010-11-30 06:59:21
【问题描述】:
我正在使用 MVC 设置并尝试将 javascript 注入我的视图 (.php),但允许 javascript 访问视图可以访问的所有变量。我的最终目标是能够从我的 javascript 访问 PHP 变量(例如,我可以 alert() 产品名称)。
这是我的申请流程:
- 启动输出缓冲区
- 在关联数组上调用 extract()(其中包含我的视图的数据)
- 在视图文件上调用 require
- 返回输出缓冲区的内容,并清空缓冲区
- 回声缓冲区
我有一个函数injectJS(),如下:
function injectJS($jsFile) {
require APP_DIR . $jsFile;
}
这是我要注入的 Javascript (alert.js) 示例:
<script type="text/javascript">
alert("product name: <?php echo $product['name']; ?>");
</script>
因此,在我的视图文件中,我调用injectJS('alert.js');。它注入了 javascript,但是当我渲染视图时,我收到一个 PHP 通知,指出有一个未定义的变量 $product。但是,如果我手动编写 require 语句,一切正常。我想通过使用injectJS() 来实现什么可能?
编辑
我忘了提到我确实尝试将变量显式传递给injectJS(),它确实有效,但我不想总是传递变量。如果视图需要将许多变量传递给 JS,它可能会变得混乱和繁琐。有没有办法(在函数内)获取负责调用 injectJS() 的脚本范围内的变量?
编辑 2
再想一想,再次传递变量 不是 一个真正的问题,我想我只是贪婪/懒惰;)。我只会在需要时将变量传递给injectJS()。感谢回复
【问题讨论】:
-
你不能传递一个包含包括 $products 在内的所有内容的大数组吗?还是您认为这仍然很混乱?