在Prestashop 1.6中分配来自Smarty的JavaScript var

时间:2014-04-04 16:06:05

标签: javascript php smarty prestashop prestashop-1.6

我试图定义一个JS变量,它从一个聪明的变量中获取它的值。

这就是我在PHP控制器中所做的:

public function hookDisplayBackOfficeHeader()
{
  $this->context->controller->addJS($this->_path.'js/bo_setup.js', 'all');
}

我在单独的函数上声明变量:

    private function _loadTestInfo()
    {
      $this->context->smarty->assign(array(
         'test_username' => 'myuser',
            ));
    }

并从getContent()函数调用它:

{
  $output = '';
 ....
$this->output .= $this->display(__FILE__, '/views/templates/admin/back_office.tpl');
$this->_loadTestInfo();
$this->output .= $this->renderForm();
return $this->output;
}

我的bo_setup.js函数如下所示:

var test_username = "{$test_username}";
document.getElementById('username').value = test_username;

但是,运行该页面会显示“用户名”。变量" {$ test_username}"的值而不是" myuser"值。

任何线索?

2 个答案:

答案 0 :(得分:2)

可能会很晚,但以下内容可以帮助您:

{addJsDef test_username=$test_username|escape:'html':'UTF-8'}

这将添加到smarty .tpl文件中,它将为您定义变量。

在此之后,最好使用document.onload = function ...确保在加载内容后执行javascript。

答案 1 :(得分:2)

要访问JavaScript中的变量,您可以使用以下命令在控制器中分配它们:

Media::addJsDef(array('mymodule' => array('test_username' => 'Your name')));
$this->context->controller->addJS($this->_path.'myscript.js')

然后您可以在JavaScript中或通过控制台使用它们:

let var1 = mymodule.test_username;
相关问题