addJS函数不适用于prestashop中的管理员
我试图使用一个模块在prestashop admin中使用addJS函数不适用于prestashop中的管理员,prestashop,Prestashop,我试图使用一个模块在prestashop admin中使用backOfficeHeaderhook添加javascript文件,但什么也没发生。我的代码如下 public function install() { if (!parent::install() || !$this->registerHook('backOfficeHeader')) return false; return parent::install() &&am
backOfficeHeader
hook添加javascript文件,但什么也没发生。我的代码如下
public function install()
{
if (!parent::install()
|| !$this->registerHook('backOfficeHeader'))
return false;
return parent::install() &&
$this->registerHook('backOfficeHeader');
}
public function hookBackOfficeHeader() {
$this->context->controller->addJS(_MODULE_DIR_.$this->module->name.'js/hs_custom.js');
}
您是否尝试检查addJS路径?我认为,如果其他JS文件正常工作,那么就没有什么可能了。 尝试使用$this->\u路径。
$this->context->controller->addJS($this->_path.'views/js/hs_custom.js');
1) 输出路径并检查它是否有效。
2) 重新加载页面并检查网络。页面是否加载脚本?
3) 如果你用钩子换了什么东西,记得重置模块。
4) 检查模块挂钩 如果您使用的是PS 1.5或1.6,则应使用hook“actionAdminControllerSetMedia” 您的模块安装程序应该检查使用了哪个prestashop版本,然后注册所需的钩子
if (version_compare(substr(_PS_VERSION_, 0, 3), '1.5', '<'))
$this->registerHook('BackOfficeHeader');
else
$this->registerHook('actionAdminControllerSetMedia');
PS对我来说,“这条路”行不通。我的解决方案是使用$\u服务器['DOCUMENT\u ROOT']
public function hookActionAdminControllerSetMedia($params)
{
// add necessary javascript to products back office
if($this->context->controller->controller_name == 'AdminProducts' && Tools::getValue('id_product'))
{
$this->context->controller->addJS($_SERVER['DOCUMENT_ROOT']."/modules/apl/views/js/jquery.ui.touch-punch.min.js");
}
}
你犯了几个错误。 这是对属性的无效访问:
$This->module->name
。必须是$this->name
。即,生成JavaScript文件路径的正确代码为:
_MODULE_DIR_ . $this->name . '/js/hs_custom.js'
或者像这样(短接):
您还完成了模块和挂钩的双重安装。
您可以使用hookBackOfficeHeader
,但首选hookActionAdminControllerSetMedia
因此,通过模块类为后台办公室(即AdminController)添加JS和CSS文件的正确示例是:
public function hookActionAdminControllerSetMedia($params)
{
// Adds your's CSS file from a module's directory
$this->context->controller->addCSS($this->_path . 'views/css/example.css');
// Adds your's JavaScript file from a module's directory
$this->context->controller->addJS($this->_path . 'views/js/example.js');
}
这里是详细信息,我也遇到了这个问题,没有错误和警告,所有语法都是正确的。但是找不到我的js文件。 我终于找到了原因。在我的例子中,JS文件中没有任何内容,系统总是传递这个没有内容的文件
_MODULE_DIR_ . $this->name . '/js/hs_custom.js'
$this->_path . 'js/hs_custom.js'
public function hookActionAdminControllerSetMedia($params)
{
// Adds your's CSS file from a module's directory
$this->context->controller->addCSS($this->_path . 'views/css/example.css');
// Adds your's JavaScript file from a module's directory
$this->context->controller->addJS($this->_path . 'views/js/example.js');
}