Así es como obtengo los artículos del carrito:
$quote = Mage::getModel('checkout/cart')->getQuote();
$items=$quote->getAllitems();
Me gustaría hacer algo como esto:
$items->sortBy('updated_at','desc');
¿Cuál es la forma adecuada de hacer Magento?
Estoy tentado de hacer algo como esto:
$productArray=array();
foreach($items as $item){
$product=$item->getProduct();
array_push($productArray,$product);
}
$productArray = $this->sortArray($productArray);
protected sortArray($productArray){
...sort by updated date;
return $sortedArray
}
Sin embargo, necesitaría crear un montón de objetos dateTime para comparar fácilmente estos valores y esto parece ser una operación computacionalmente engorrosa.
Respuestas:
No hay función para ordenar el por
por
getAllItems
provenirarray
de un objeto y según miconcept you cannot sort this by field.
En este caso, puede usar y
getItemsCollection().
luego usar la función seOrder ordenar por cualquier campoEditar:
Reescribir clase Mage_Sales_Model_Quote
Será mejor idea para reescribir la clase
Mage_Sales_Model_Quote
.En este Magento llamada escalled getAllItems()
función y getItemsCollection() function
principal de respuesta para obtener todos los elementos.Reescribir clase:
Use la función setOrder () para Ordenar:
La función setOrder () ordena la colección de elementos por campos
fuente
Solución:
Reescribe tu método
Mage_Sales_Model_Quote::getAllVisibleItems
con él:Escrito temprano:
Probablemente no sea una muy buena solución en esta situación, pero tenlo en cuenta. (Magento tiene muchos de esos lugares donde puede ser útil)
Dentro del método getData (), coloque cualquier campo que desee ordenar. En tu caso puede ser
updated_at
. En caso de insertarupdated_at
mejor inserte su marca de tiempo.fuente