我在Prestashop中創建了一個自定義模塊。在該模塊中,我想在js文件中使用我的php變量。我如何訪問js文件中的值。我不想將變量傳遞給smarty文件。 js文件被掛在頁眉中。那麼有人可以告訴我hw將php值傳遞給掛在頭部的外部js文件嗎?Prestashop訪問php變量在一個js文件中被鉤在頭上?
任何幫助和建議將非常可觀。謝謝
我在Prestashop中創建了一個自定義模塊。在該模塊中,我想在js文件中使用我的php變量。我如何訪問js文件中的值。我不想將變量傳遞給smarty文件。 js文件被掛在頁眉中。那麼有人可以告訴我hw將php值傳遞給掛在頭部的外部js文件嗎?Prestashop訪問php變量在一個js文件中被鉤在頭上?
任何幫助和建議將非常可觀。謝謝
即使你不想這樣做(爲什麼?),你將不得不通過Smarty傳遞它。您模塊已有的鉤到displayHeader
掛鉤,它是
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>
然後在你的JavaScript文件,你可以使用全局變量foo
。
這裏是如何做到這一點
Media::addJsDef(array('var_name' => $variable));
單個變量,我建議把它當作一個Smarty的變量,唯一的方式來獲得PHP變量是使一個Ajax請求檢索變量,可能會過量 – defuzed
@defuzed感謝您的評論。但我的js文件是一個外部文件,我的意思是不在我的smarty文件中,所以我如何傳遞值? – NewUser