Magento non verrà eseguito il mio cliente script di installazione
-
16-10-2019 - |
Domanda
Va bene così sto cercando di aggiungere un campo alla registrazione con il mio modulo. Ovviamente devo aggiungere un attributo. Quindi il mio "script di installazione" è in realtà solo un aggiornamento per l'entità cliente. Tuttavia, il modulo è abilitato e ancora quando rinfresco il front-end non verrà eseguito il mio script di installazione. Ho messo un dado al fronte per vedere se anche colpire e il suo no.
Ho controllato circa 7 altre domande di overflow dello stack e ciascuno degli errori era abbastanza palese. Cose come la configurazione non corrisponde alla cartella cui si trovava. Usando customer_setup come nome. Gli errori nel file di configurazione. Più e più volte ho guardato il mio codice e so im manca qualcosa di piccolo. Alcuni qualche errore di battitura ..... ma Ive sprecato troppo tempo ormai, quindi ho la mano fuori a voi grandi persone.
Config.xml
<config>
<modules>
<BlizzardLabs_Customer>
<version>0.1.0</version>
</BlizzardLabs_Customer>
</modules>
<global>
<fieldsets>
<customer_account>
<flavour>
<create>1</create>
<update>1</update>
</flavour>
</customer_account>
</fieldsets>
<resources>
<blizzardlabs_customer_setup>
<setup>
<module>BlizzardLabs_Customer</module>
<class>BlizzardLabs_Customer_Model_Entity_Setup</class>
</setup>
</blizzardlabs_customer_setup>
</resources>
</global>
</config>
BlizzardLabs / Cliente / Modello / Entità / setup.php
class BlizzardLabs_Customer_Model_Entity_Setup extends Mage_Customer_Model_Entity_Setup {
public function getDefaultEntities() {
$entities = parent::getDefaultEntities();
// Add flavour to customer attributes
$entities['customer']['attributes']['flavour'] = array(
'label' => 'Ice Cream Flavour',
'visible' => true,
'required' => true,
);
return $entities;
}
}
BlizzardLabs / Cliente / sql / blizzardlabs_customer_setup / MySQL4-install-0.1.0.php
Mage::log('Installing BlizzardLabs_Customer');
$installer = $this;
$installer->startSetup();
$installer->addAttribute('customer', 'flavour', array(
'label' => 'Ice Cream Flavour',
'type' => 'varchar',
'input' => 'text',
'visible' => true,
'required' => true,
'position' => 1,
));
$attrs = array('flavour');
foreach ($attrs as $item) {
$attr = Mage::getSingleton('eav/config')->getAttribute('customer', $item);
$attr->setData('used_in_forms', array('adminhtml_customer','customer_account_edit','customer_account_create'))->save();
}
$installer->endSetup();
echo "information added to database";
Aggiornamento: mi scuso per l'errore di battitura. Lo script è in blizzardlabs_customer_setup
Tavolo code_resource:
+-------------------------------------+---------+
| code | version |
+-------------------------------------+---------+
| adminnotification_setup | 1.0.0 |
| admin_setup | 0.7.1 |
| amazonpayments_setup | 0.1.2 |
| api_setup | 0.8.1 |
| backup_setup | 0.7.0 |
| bundle_setup | 0.1.8 |
| catalogindex_setup | 0.7.10 |
| cataloginventory_setup | 0.7.5 |
| catalogrule_setup | 0.7.7 |
| catalogsearch_setup | 0.7.6 |
| catalog_setup | 0.7.69 |
| checkout_setup | 0.9.3 |
| chronopay_setup | 0.1.0 |
| cms_setup | 0.7.8 |
| compiler_setup | 0.1.0 |
| contacts_setup | 0.8.0 |
| core_setup | 0.8.13 |
| cron_setup | 0.7.1 |
| customer_setup | 0.8.11 |
| cybermut_setup | 0.1.0 |
| cybersource_setup | 0.7.0 |
| dataflow_setup | 0.7.4 |
| directory_setup | 0.8.5 |
| downloadable_setup | 0.1.15 |
| eav_setup | 0.7.13 |
| enterprise_admingws_setup | 0.0.1 |
| enterprise_catalogevent_setup | 0.0.4 |
| enterprise_catalogpermissions_setup | 0.0.6 |
| enterprise_customerbalance_setup | 0.0.10 |
| enterprise_enterprise_setup | 0.0.1 |
| enterprise_giftcardaccount_setup | 0.0.12 |
| enterprise_giftcard_setup | 0.0.8 |
| enterprise_invitation_setup | 0.0.3 |
| enterprise_logging_setup | 0.1.8 |
| enterprise_pci_setup | 0.0.3 |
| enterprise_staging_setup | 0.1.10 |
| enterprise_websiterestriction_setup | 0.0.1 |
| eway_setup | 0.1.0 |
| flo2cash_setup | 0.1.1 |
| giftmessage_setup | 0.7.2 |
| googleanalytics_setup | 0.1.0 |
| googlebase_setup | 0.1.1 |
| googlecheckout_setup | 0.7.3 |
| googleoptimizer_setup | 0.1.2 |
| ideal_setup | 0.1.0 |
| log_setup | 0.7.6 |
| newsletter_setup | 0.8.0 |
| oscommerce_setup | 0.8.10 |
| paybox_setup | 0.1.3 |
| paygate_setup | 0.7.0 |
| payment_setup | 0.7.0 |
| paypaluk_setup | 0.7.0 |
| paypal_setup | 0.7.2 |
| poll_setup | 0.7.2 |
| productalert_setup | 0.7.2 |
| protx_setup | 0.1.0 |
| rating_setup | 0.7.2 |
| reports_setup | 0.7.7 |
| review_setup | 0.7.4 |
| salesrule_setup | 0.7.7 |
| sales_setup | 0.9.38 |
| sendfriend_setup | 0.7.2 |
| shipping_setup | 0.7.0 |
| sitemap_setup | 0.7.2 |
| strikeiron_setup | 0.9.1 |
| tag_setup | 0.7.2 |
| tax_setup | 0.7.8 |
| usa_setup | 0.7.0 |
| weee_setup | 0.13 |
| wishlist_setup | 0.7.4 |
+-------------------------------------+---------+
Soluzione
Credo che hai bisogno di aggiungere il MySQL4-install-0.1.0.php all'interno di una cartella chiamata blizzardlabs_customer_setup
. Proprio come il nome del tag XML all'interno del tag <resources>
. Così il percorso dovrebbe essere BlizzardLabs/Customer/sql/blizzardlabs_customer_setup/mysql4-install-0.1.0.php
. Prima di provare di nuovo con il percorso modificato make sicuri di eliminare il record dalla core_resource
tavolo con il codice blizzardlabs_customer_setup
e cancella la cache.
Fuori tema. Se si lavora con Magento EE 1.12 si può perdere la mysql4
nel nome script di installazione. Si può rendere install-0.1.0.php
. Ma non è così importante. Funziona in entrambi i sensi.
[EDIT]
Ho provato provato a eseguire lo script. Ho creato i file come hai descritto. L'unica cosa che aggiunto è stato il file di dichiarazione del modulo: app/etc/modules/BlizzardLabs_Customer.xml
con questo contenuto
<?xml version="1.0"?>
<config>
<modules>
<BlizzardLabs_Customer>
<active>true</active>
<codePool>local</codePool>
<depends>
<Mage_Customer />
</depends>
</BlizzardLabs_Customer>
</modules>
</config>
E tutto ha funzionato alla perfezione. Assicurati svuotato la cache. Assicurarsi che i moduli locali non sono disabilitate (in app/etc/local.xml
questo tag è impostato su false <disable_local_modules>false</disable_local_modules>
). Questo è tutto quello che posso pensare.
Altri suggerimenti
Il pensiero devo fare la cosa giusta e questo post. Guardando nella tabella "core_resource" nel database posso già vedere una voce customer_setup
che è dal nucleo di Magento.
La mia ipotesi è che questo è il motivo per cui non si può non utilizzare blizzardlabs_customer_setup
nulla a che fare con 2 sottolineatura. Così uno dei controlli dopo aver eseguito l'installazione, se non lo si può vedere in "core_resource" tabella dovrebbe essere quello di garantire non è stato utilizzato tutto ciò che potrebbe violare con le voci già esistenti, ad esempio, anything_customer_setup
_g