7

多くの拡張機能(私が書いたものを含む)には、機能を追加せずに抽象基本クラスを拡張するだけのヘルパークラスが含まれています。ヘルパーは通常次のようになります。

class MyCompany_MyModule_Helper_Data extends Mage_Core_Helper_Abstract {
}

したがって、拡張クラスは、抽象クラスが提供するもの、特に翻訳のためにのみ使用されます。一方、MagentoのすべてのBlockクラスとControllerクラスは__()、変換のメソッドを継承します。現在開発中の拡張機能では、ヘルパークラスを一度も呼び出す必要はありません。

ヘルパークラスを削除してから削除できますconfig.xmlか?私はそれを試しましたが、拡張機能はなくても問題なく動作するようですが、Magentoの複雑さのために、私が気付いていない影響があるのではないかといつも少し心配しています。

4

2 に答える 2

10

モジュールを最初から作成する場合、ヘルパークラスは厳密には必要ありません。私は通常、必要になるまで作成をスキップします。

ただし、XMLファイルがmodule属性を使用して変換モジュールを指定する場合、その属性は有効なヘルパーに解決される必要があります。たとえば、このコアファイルでは

<!-- File: app/code/core/Mage/Catalog/etc/system.xml -->
<tabs>
    <catalog translate="label" module="catalog">
        <label>Catalog</label>
        <sort_order>200</sort_order>
    </catalog>
</tabs>

ありmodule="catalog"ます。この属性を指定すると、ラベルを変換するMagentoシステムコードは次のようになります。

Mage::helper('catalog')->__('Label');

そのため、カタログモジュールからヘルパーを削除すると、Magentoの一部が破損します。

(単一パーツクラスエイリアスは、Magentoシステムコードによってcatalog自動的に変換されます)Mage::helper('catalog/data')

この「翻訳をグループ化するためのヘルパー」機能は、レイアウト、ウィジェットなどだけでなく、Magentoの多くのXMLファイルで使用されます。system.xmlさらに、Magentoには、翻訳用のヘルパーモジュールの存在を推測および/または要求するシステムがいくつかあります(アクセス制御、外部APIシステムなど)。

短編小説:モジュールを最初から作成する場合は、Magentoがヘルパーをインスタンス化できないというエラーが発生し始めるまで、ヘルパーをそのままにしておいてください。モジュールから既存のヘルパーを削除しないでください。他の人が行う可能性のある仮定と100%互換性があることを確認したい場合は、常にData.phpヘルパークラスを含めてください。

于 2012-12-22T20:19:31.467 に答える
4

Magentoのヘルパークラスには、オブジェクトと変数に対して一般的なタスクを実行できるユーティリティメソッドが含まれています。http://www.magentocommerce.com/knowledge-base/entry/magento-for-dev-part-1-introduction-to-magento#6

ヘルパーファイルが空で、カスタムメソッドがないと仮定します。

<?php 
class MagePal_SomeModule_Helper_Data extends Mage_Core_Helper_Abstract
{
}

次に、まだ影響を受ける可能性のあるもののいくつかは次のとおりです。

  • system.xml-admin->system->configのモジュールの空白の画面
  • $ this-> __('')-.phtmlテンプレートのエラー(国際化/翻訳用)

したがって、ヘルパーが空で、システム構成セクションがなく、翻訳がない場合は、「おそらく」削除しても問題ありません。

于 2012-12-22T19:50:46.873 に答える