2012-12-22 11 views
6

Molte estensioni (inclusa quella che ho scritto) includono una classe helper che estende semplicemente la classe base astratta senza aggiungere alcuna funzionalità. L'aiutante di solito è questo:Le classi di aiuto sono obbligatorie per tutte le estensioni Magento?

class MyCompany_MyModule_Helper_Data extends Mage_Core_Helper_Abstract { 
} 

La classe estesa è quindi appena usato per le cose che la classe astratta fornisce, in particolare per le traduzioni. D'altra parte, tutte le classi Block e Controller in Magento ereditano il metodo __() per le traduzioni - e in un'estensione che sto attualmente sviluppando non ho bisogno di chiamare la classe helper neanche una volta.

Posso solo eliminare la classe di supporto e rimuoverla da config.xml? L'ho provato e l'estensione sembra funzionare bene senza, ma a causa della complessità di Magento sono sempre un po 'preoccupato che ci siano implicazioni di cui non sono a conoscenza.

risposta

9

Se si sta creando un modulo da zero, le classi di supporto non sono strettamente necessarie. Io di solito salta a crearne uno finché non è necessario.

Tuttavia, se un qualsiasi file XML utilizza l'attributo module per specificare un modulo di traduzione, tale attributo ha bisogno di risolvere a un aiutante valida. Per esempio, in questo nucleo il file

<!-- 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> 

C'è module="catalog". Specificando questo attributo, il codice del sistema Magento che traduce l'etichetta sarà simile a questa

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

Quindi, rimuovendo l'aiutante dal modulo catalogo si romperebbe parti di Magento.

(La classe singola parte alias catalog viene automaticamente convertito in Mage::helper('catalog/data') da Magento codice del sistema)

Questo "aiuto traduzioni di gruppo per" caratteristica è utilizzata in molti di file XML di Magento, non solo system.xml (il layout, widget, ecc.). Inoltre, in Magento ci sono alcuni sistemi che dedurranno e/o richiedono l'esistenza di un modulo di supporto per le traduzioni (controllo degli accessi, sistema API esterno, ecc.)

Breve storia lunga: se stai creando un modulo da zero, sentiti libero di lasciare l'helper fino a quando non inizi a ricevere errori che Magento non può istanziare un helper. Non rimuovere mai un helper esistente da un modulo e, se vuoi assicurarti di essere compatibile al 100% con le ipotesi che potrebbero fare altre persone, includi sempre una classe helper Data.php.

4

Le classi di supporto di Magento contengono metodi di utilità che consentono di eseguire attività comuni su oggetti e variabili. http://www.magentocommerce.com/knowledge-base/entry/magento-for-dev-part-1-introduction-to-magento#6

Supponendo che il file di supporto sia vuoto senza metodi personalizzati es.

<?php 
class MagePal_SomeModule_Helper_Data extends Mage_Core_Helper_Abstract 
{ 
} 

Poi alcune delle cose che possono ancora essere interessati sono:

  • system.xml - schermo in bianco per il modulo in admin -> Sistema -> config
  • $ this -> __ ('') - errore nel tuo modello .phtml (per internazionalizzazione/traduzione)

Quindi se il tuo helper è vuoto, senza una sezione di configurazione del sistema e nessuna traduzione, allora 'forse' ok cancellare.

Problemi correlati