Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
addJS函数不适用于prestashop中的管理员_Prestashop - Fatal编程技术网

addJS函数不适用于prestashop中的管理员

addJS函数不适用于prestashop中的管理员,prestashop,Prestashop,我试图使用一个模块在prestashop admin中使用backOfficeHeaderhook添加javascript文件,但什么也没发生。我的代码如下 public function install() { if (!parent::install() || !$this->registerHook('backOfficeHeader')) return false; return parent::install() &&am

我试图使用一个模块在prestashop admin中使用
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'
或者像这样(短接):

您还完成了模块和挂钩的双重安装。 您可以使用hook
BackOfficeHeader
,但首选hook
ActionAdminControllerSetMedia

因此,通过模块类为后台办公室(即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');
}