2013-06-05 17 views
5

Quando visito una pagina utilizzando il magentoshop; Ottengo questo errormessage:getID() su un non oggetto

chiamata a un getId funzione membro() su un non-oggetto in /xxxxx/app/code/core/Mage/Catalog/Model/Product/Type/Configurable/Price.php su linea

Sono diretto a quella linea, fa parte di una funzione chiamata getTotalConfigurableItemsPrice. E 'in un foreach:

E dice:

foreach ($attributes as $attribute) { 
    $attributeId = $attribute->getProductAttribute()->getId(); 

E la roba attributo è il problema. Ho provato un var_dump() su $ Attribute-> getProductAttribute() e ricevuto NULL A var_dump su ($ attributo) mostra cioè

["_data":protected]=> 
    array(5) { 
    ["product_super_attribute_id"]=> 
    string(4) "3845" 
    ["product_id"]=> 
    string(8) "10001563" 
    ["attribute_id"]=> 
    string(3) "135" 
    ["position"]=> 
    string(1) "0" 
    ["product_attribute"]=> 
    NULL 
    } 

Cosa c'è di sbagliato con l'attributo e come posso risolvere il problema? Se dico:

$attributeId = 1234; 

invece di

$attributeId = $attribute->getProductAttribute()->getId(); 

L'errore è andato, ma ho bisogno di valori veri ..

+0

Avete installato un'estensione che estende la funzionalità del set di attributi del prodotto Magento? – Mufaddal

+0

NO, nessuna estensione di questo modo è stata installata – user1697061

+1

Dovresti accettare la risposta sotto come risolve la tua domanda. – zigojacko

risposta

0

ho lo stesso problema come te quando ho avuto il mio aggiornare Magento, una delle mie estensioni è estendere la funzionalità dell'insieme di attributi in modo da darmi questo errore.

Quindi finalmente ho eseguito questa query.

update eav_entity_type set additional_attribute_table='catalog/eav_attribute',entity_attribute_collection='catalog/product_attribute_collection' where entity_type_id=4;

E il mio problema è stato risolto.

Spero che questo ti possa aiutare.

+0

Grazie per la risposta, ma ho ricevuto: Righe interessate: 0 Quindi nessun miglioramento:/ – user1697061

9

Ho avuto lo stesso problema e ho trovato la soluzione per questo.

Descrizione del problema:

Il problema riguarda i prodotti configurabili che erano con attributo impostato "Default" e configurabile attributo "colore". È stato creato un nuovo set di attributi basato su "Predefinito" e il colore dell'attributo è stato rimosso da tale serie di attributi. Successivamente con alcune estensioni di terze parti, i set di attributi di alcuni prodotti configurabili sono stati modificati in quello nuovo. E quello stava causando il problema.

Soluzione:

aggiungere l'attributo "colore" al set di attributi del prodotto problematico.

Approach:

Gli attributi configurabili per un dato prodotto sono memorizzati nella tabella catalog_product_super_attribute. Utilizzando l'id del prodotto è possibile scoprire quali sono tali attributi.

mysql> select * from catalog_product_super_attribute where product_id=1826; 
+----------------------------+------------+--------------+----------+ 
| product_super_attribute_id | product_id | attribute_id | position | 
+----------------------------+------------+--------------+----------+ 
|      1826 |  1826 |   92 |  0 | 
|      2683 |  1826 |   209 |  0 | 
+----------------------------+------------+--------------+----------+ 
mysql> select attribute_id,attribute_code from eav_attribute where (attribute_id=92 or attribute_id=208); 
+--------------+----------------+ 
| attribute_id | attribute_code | 
+--------------+----------------+ 
|   92 | color   | 
|   208 | color_mutsy | 
+--------------+----------------+ 

Tutto quello che dovete fare è andare al tuo amministratore per Catalogo - Attributi - gestire i set di attributi e aggiungere gli attributi al set di attributi del prodotto problematico e reindex.

+0

Grande scoperta. La tua risposta mi ha permesso di risolvere lo stesso scenario che stiamo vivendo in un negozio ma con una vasta gamma di attributi (non solo quelli a colori). – zigojacko

Problemi correlati