Prestashop访问挂接在头文件中的js文件中的php变量?

Prestashop访问挂接在头文件中的js文件中的php变量?,prestashop,prestashop-1.6,Prestashop,Prestashop 1.6,我正在Prestashop中创建一个自定义模块。在该模块中,我想在js文件中使用我的php变量。如何访问js文件中的值。我不想将变量传递给smarty文件。 js文件挂接在头文件中。那么,有人能告诉我hw将php值传递给外部js文件(挂接在头文件中)吗 任何帮助和建议都是非常值得的。谢谢您必须通过Smarty,即使您不想这样做(为什么?)。您的模块已经钩住了displayHeaderhook,这是一个 public function hookDisplayHeader($params) {

我正在Prestashop中创建一个自定义模块。在该模块中,我想在js文件中使用我的php变量。如何访问js文件中的值。我不想将变量传递给smarty文件。 js文件挂接在头文件中。那么,有人能告诉我hw将php值传递给外部js文件(挂接在头文件中)吗


任何帮助和建议都是非常值得的。谢谢

您必须通过Smarty,即使您不想这样做(为什么?)。您的模块已经钩住了
displayHeader
hook,这是一个

public function hookDisplayHeader($params)
{
    $this->context->controller->addJS($this->getPathUri().'views/js/%your_js_file%.js');

    $this->context->smarty->assign('foo', 'bar');

    return $this->display(__FILE__, 'header.tpl');
}
您的
header.tpl
看起来像:

<script type="text/javascript">
    var foo = "{$foo|escape:'htmlall':'UTF-8'}";
</script>

var foo=“{$foo | escape:'htmlall':'UTF-8'}”;

然后在javascript文件中,您可以使用全局
foo
变量。

您必须通过Smarty传递它,即使您不想这样做(为什么?)。您的模块已经钩住了
displayHeader
hook,这是一个

public function hookDisplayHeader($params)
{
    $this->context->controller->addJS($this->getPathUri().'views/js/%your_js_file%.js');

    $this->context->smarty->assign('foo', 'bar');

    return $this->display(__FILE__, 'header.tpl');
}
您的
header.tpl
看起来像:

<script type="text/javascript">
    var foo = "{$foo|escape:'htmlall':'UTF-8'}";
</script>

var foo=“{$foo | escape:'htmlall':'UTF-8'}”;
然后在javascript文件中,您可以使用全局
foo
变量。

以下是如何做到这一点

Media::addJsDef('var_name', $variable);
// or
Media::addJsDef(array('var_name' => $variable));
下面是如何做到这一点

Media::addJsDef('var_name', $variable);
// or
Media::addJsDef(array('var_name' => $variable));

对于单个变量,我建议将其作为smarty变量传递,从php获取变量的唯一其他方法是发出ajax请求以检索可能是overkill@defuzed谢谢你的评论。但是我的js文件是一个外部文件,我的意思是不在smarty文件内,所以我如何传递值?对于单个变量,我建议将其作为smarty变量传递,从php获取变量的唯一其他方法是发出ajax请求以检索可能是overkill@defuzed谢谢你的评论。但是我的js文件是一个外部文件,我的意思是不在smarty文件中,所以我如何传递值?