Magento2で静的メソッドをオーバーライドする方法


11

プラグインインターセプターおよび優先設定によるオーバーライドは、静的メソッドでは機能しません。

カスタム可視を返すには、Magento \ Catalog \ Model \ Product \ VisibilityのgetOptionArrayメソッドをオーバーライドする必要があります

/**
     * Retrieve option array
     *
     * @return array
     */
    public static function getOptionArray()
    {
        return [
            self::VISIBILITY_NOT_VISIBLE => __('Not Visible Individually'),
            self::VISIBILITY_IN_CATALOG => __('Catalog'),
            self::VISIBILITY_IN_SEARCH => __('Search'),
            self::VISIBILITY_BOTH => __('Catalog, Search')
        ];
    }

これを達成できる他の方法はありますか?


いいえ。新しい表示オプションを追加する方法を尋ねています。静的メソッドであるgetOption配列は、インターセプターまたは設定で変更できません。
user3339988 2017年

すみません、間違った質問にマークしました。この一つは、あなたが役立つはずmagento.stackexchange.com/questions/134386/...
PY Yick

それは私の質問に答えません。
user3339988 2017年

誰でも?私はこれで2〜3日間行き詰っています。可視性オプションを追加する別の方法はありますか?
user3339988 2017年

回答:


1

上書きするだけでgetOptionArray()は十分ではありません。Magento\ Catalog \ Model \ Product \ Visibilityの107、120、134行目でgetOptionArray()が呼び出された場合、selfSelfは常に新しいメソッドではなく元のメソッドを呼び出すため、単にコピーする必要があるためです。と貼り付けgetAllOption()getAllOptions()getOptionText()オーバーライドしたモデルクラスに(オーバーライドした場所と同じgetOptionArray()

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.