cancel
Showing results for 
Search instead for 
Did you mean: 

Magento2 Factory e aggiornamento database

Magento2 Factory e aggiornamento database

Ciao a tutti,

 
sto sviluppando un portale di medie e grandi dimensioni con Magento (v. 2.0.6). Il portale richiederà lo sviluppo di diversi moduli ad-hoc e sto trovando un pò di difficoltà ad implementare gli script di Install/Upgrade Schema/Data.
 
In sostanza non ho completamente capito come utilizzare i vari comandi di aggiornamento combinati con il codice auto-generato da Magento. Mi spiego, attualmente ho creato un modulo che contiene uno script di UpgradeData. Ho iniettato nel costruttore dello script:
  • EavSetup
  • ObjectManager
  • ProductFactory
Ho lanciato il comando:
 
php bin/magento setup:di:compile
 
Per la creare il codice-autogenerato e la cartella /var/di. E fino a qui tutto ok. Successivamente ho visto che lanciando il comando di aggiornamento globale "php bin/magento setup:upgrade" buona parte del contenuto della cartella /var/generation viene cancellato. Infatti alla fine il sistema suggerisce di compilare nuovamente il tutto. 
 
Lanciando il comando di upgrade-data invece ricevo un errore al momento di lanciare il metodo "create" sull'oggetto ProductFactory. Praticamente è come se non riuscisse ad instanziare "Magento\Catalgo\Model\Product". 
 
 
 
Qualcuno ha indicazioni su come utilizzare i vari comandi messi a disposizione? Soprattutto quando va lanciato il comando di aggiornamento della DI e quando il setup:upgrade. La cosa mi interesserebbe anche per il passaggio in produzione, nel caso di installazione/aggiornamento di nuovi moduli non mi vorrei ritrovare a dover lanciare comandi cosi "delicati" con continuità.
 
Inoltre, se qualcuno è interessato, credo sia utile comprendere al meglio tutto il nuovo sistema di Factory/Plugin e sono a disposizione per discuterne.  
 
1 REPLY 1

Re: Magento2 Factory e aggiornamento database

Ciao,

 

durante il ciclo di sviluppo ti consiglio di impostare il developer mode:

 

 

bin/magento deploy:mode:set developer

in questo modo non dovrai preoccuparti di lanciare altri comandi di generazione del codice perché in developer mode le classi dinamiche che non vengono trovate vengono generate al volo;

 

 

questo è il motivo per cui non è consigliabile mettere un sito in produzione con il developer mode attivo, avresti una penalizzazione nelle performance;

 

il comando seguente infatti è utilizzato per generare le classi mancanti in production mode e non è da utilizzare quando sei in developer mode

 

bin/magento setup:di:compile

 

>ho visto che lanciando il comando di aggiornamento globale "php bin/magento setup:upgrade" buona parte del contenuto della cartella /var/generation viene cancellato. Infatti alla fine il sistema suggerisce di compilare nuovamente il tutto. 

 

questo in realtà è un bug riconosciuto, puoi ignorare questo messaggio se sei in developer mode;

 

il consiglio che ti do quindi è di passare in developer mode e di ripulire il contenuto delle seguenti cartelle:

 

  • var/di
  • var/generation
  • var/view_preprocessed
  • pub/static

questo dovrebbe anche far sparire l'errore seguente:

 

attenzione: non eliminare gli eventuali file .htaccess presenti in queste cartelle, in particolare in pub/static, ne parlo qui

 

>Lanciando il comando di upgrade-data invece ricevo un errore al momento di lanciare il metodo "create" sull'oggetto ProductFactory. Praticamente è come se non riuscisse ad instanziare "Magento\Catalog\Model\Product".

 

Per quanto riguarda il passaggio in produzione credo che scriverò presto un articolo perché sto testando i passaggi ed è più complesso di quanto non fosse in Magento 1. 

 

Nel frattempo ti consiglio di leggere anche questo articolo: http://www.bitbull.it/blog/gli-application-mode-in-magento-2/

 

Un saluto,

Alessandro

 

Alessandro Ronchi -- https://github.com/aleron75