我试图定义一个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"值。
任何线索?
答案 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;