1

モジュールのバックオフィスに JS および CSS ファイルを追加したいと考えています。しかし、エラーが発生します:クラス「AdminModulesController」の「registerStylesheet」という名前の未定義のメソッドを呼び出そうとしました。

他の投稿を見たことがあります (このShow my module JS at footer in prestashop など) またはここhttps://devdocs.prestashop.com/1.7/themes/getting-started/asset-management/

したがって、これは減価償却されているため、 addJS() 関数は避けたいと思います。しかし、 $this->context->controller->registerStylesheet() および $this->context->controller->registerJavascript() を使用しようとすると、上記のエラーが発生します。

これは私のフックコード全体です:

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->controller の種類を確認しましたが、実際には registerStylesheet() および registerJavascript() メソッドがありません。私は何が欠けていますか?インターネットのあらゆる場所で説明されているとおりにすべてを行っているのに、なぜエラーが発生するのですか?

4

2 に答える 2

3

使用する方法の説明:

これらはFrontControllerPrestaShop 1.7 のメソッドです:registerJavascriptおよびregisterStylesheet.

これらはFrontController、PrestaShop 1.7 のレガシー (非推奨) メソッドです:addJSおよびaddCSS.

これらはAdminController、PrestaShop 1.7、1.6、1.5:addJSおよびのメソッドaddCSSです。

したがって、モジュール クラスを介してバックオフィス (つまり、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');
}

追加情報については、私のさらに別の回答how to register JavaScript in a back-office (in admin pages) を参照してください。この質問の後に更新しました。

于 2019-10-30T04:38:48.537 に答える