2012-03-22 13 views
10

Mage :: getModel ('catalog/category') -> load ($ id) non funziona (non ci sono dati caricato, e getId() è vuoto).

ma se faccio questo:

 $collection = Mage::getModel('catalog/category')->getCollection(); 
    foreach($collection as $category) { 
     if($category->getId() == $id) { 
      echo "it has been founnnd!!!"; 

     } 
    } 

funziona?

Vorrei menzionare che sto eseguendo questo codice tramite cli con i test di php in modo che sia avviato. La mia ipotesi è che potrebbe esserci un problema con l'ambito?

risposta

15

Penso che il problema deve essere con i test dell'unità o da qualche altra parte.

Mage::getModel('catalog/category') 
    ->setStoreId($store_id) 
    ->load($id); 

funziona perfettamente bene per me, non importa se io uso di apache, apache2handler, cgi PHP, cgi-fcgi o cli SAPI e non importa quale versione di Magento (CE 1.3, 1.5, 1.6 e EE 1.11) ho provato .

+0

funziona anche senza "-> setStoreId ($ STORE_ID)" – Pascut

2

Forse sono state utilizzate tabelle di categorie piatte e l'indice non è aggiornato. Vedi questo article da alan storm.

3

Quello che ho notato (sì, dopo 3 anni) è che:

1) Categoria non verrà caricato se si dispone di tabelle piatte categoria abilitati e gli indici non sono aggiornati

2) Categoria non lo farà carico se non è in "Categoria default"

2

Spero che sicuramente funziona,

$categoryId = 3; 
$category = Mage::getModel('catalog/category') 
       ->setStoreId(Mage::app()->getStore()->getId()) 
       ->load($categoryId); 
Problemi correlati