Devo Copiare la classe completa alla piscina codice “locale” in caso di modifiche

magento.stackexchange https://magento.stackexchange.com/questions/4460

  •  16-10-2019
  •  | 
  •  

Domanda

Qualcuno può rispondere a questa per me.

Se creo la mia versione di un file Mage / core in piscina prefisso locale, non si sovrascrive completamente il file Mage / core? O saranno i metodi che non sono stati ri-definito nel mio codice ancora essere ereditato dal file core?

Esempio. Il seguente file (Exception.php) contiene diversi metodi (funzioni).

~ app
->  code
  ->  core
    ->  Mage
      ->  Customer
        ->  Exception.php

Voglio mettere la mia versione qui:

~ app
->  code
  ->  local
    ->  Mage
      ->  Customer
        ->  Exception.php

La mia versione contiene solo 1 metodo (_beforeSave()). Il file core contiene molti. Saranno tutti gli altri metodi di essere ancora disponibile per Mage dal file originale?

La speranza che è chiaro! Grazie.

È stato utile?

Soluzione

Se si inserisce un file nella cartella di local (o community) con lo stesso percorso come alcuni file dal core il file core sarà reso inutile.
L'ordine Magento cerca un file è app/code/local, app/code/community, app/code/core, lib. Se si desidera ignorare un solo metodo non copiare il file nella cartella local.
Ecco un bel tutorial che vi mostra come ignorare correttamente qualcosa.

Altri suggerimenti

Ci sono fondamentalmente tre modi diversi "valido" di modifica logica del programma in Magento

  1. Uso Eventi
  2. Utilizzo di Classe o controller riscrive
  3. copiando il file completo della piscina codice local e poi modificarlo.

mi sento di raccomandare a preferire 1. sopra 2. sopra 3. Come per gli eventi è possibile isolare correttamente il cambiamento e questo è meno probabilità di causare problemi durante l'aggiornamento la versione di Magento. 2. (Marius) di cui è ancora meglio che copiare a livello locale, nei confronti di non rischio che altre estensioni o gli aggiornamenti rompono le cose.

Quando si utilizza la piscina local, si ha sempre a mantenere il codice della classe completo (in caso di aggiornamenti).

Nel tuo caso si dovrebbe verificare se il codice si applica può essere aggiunto tramite un evento che è -. Per l'oggetto Mage_Customer chiamato customer_save_before

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a magento.stackexchange
scroll top