Не могу добавить файлы js и css в бэк-офис - PullRequest
0 голосов
/ 29 октября 2019

Я хочу добавить файлы JS и CSS в бэк-офис моего модуля. Но я получаю сообщение об ошибке: Попытка вызвать неопределенный метод с именем «registerStylesheet» класса «AdminModulesController».

Я видел другие сообщения (например, Показать мой модуль JS в нижнем колонтитуле в prestashop ) или здесь https://devdocs.prestashop.com/1.7/themes/getting-started/asset-management/

Так что я хочу избежать функции addJS (), поскольку это устарело. Но когда я пытаюсь использовать $ this-> context-> controller-> registerStylesheet () и $ this-> context-> controller-> registerJavascript (), я получаю вышеуказанную ошибку.

Это весь мой хукcode:

public function hookActionAdminControllerSetMedia($params)
{ 
    $this->context->controller->registerStylesheet(
        'mb_pages_content',
        'modules/'.$this->name.'/styles/admin.min.css'
    ); 

    $this->context->controller->registerJavascript(
        'mb_pages_content',
        'modules/'.$this->name.'/js/admin.js'
    );
}

Я проверил, что это за мой контроллер: $ this-> context->, но на самом деле он не имеет методов registerStylesheet () и registerJavascript (). Что мне не хватает? я делаю все точно так, как описано везде в интернете, почему я получаю ошибку?

Ответы [ 2 ]

1 голос
/ 30 октября 2019

Объяснение, какие методы использовать:

Это FrontController методы в PrestaShop 1.7: registerJavascript и registerStylesheet.

Это устаревшие(не рекомендуется) FrontController методы в PrestaShop 1.7: addJS и addCSS.

Это AdminController методы в PrestaShop 1.7, 1.6, 1.5: addJS и addCSS.

Итак, правильный пример добавления файлов JS и CSS для бэк-офиса (т.е. для AdminController) через класс модуля:

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');
}

Для получения дополнительной информации см. Мой еще один ответ , как зарегистрировать JavaScript в бэк-офисе (на страницах администратора) . Я обновил его после этого вопроса.

0 голосов
/ 29 октября 2019

Попробуйте:

$this->addJs(
     _PS_MODULE_DIR_ .'objet/views/js/feature.js',
     'all'
);
$this->addCss(
      _PS_MODULE_DIR_ .'objet/views/css/feature.css',
      'all'
);

С уважением

...