Beginilah cara saya mendapatkan item keranjang:
$quote = Mage::getModel('checkout/cart')->getQuote();
$items=$quote->getAllitems();
Saya ingin melakukan sesuatu seperti ini:
$items->sortBy('updated_at','desc');
Apa cara magento yang tepat untuk melakukan ini?
Saya tergoda untuk melakukan sesuatu seperti ini:
$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
}
Namun saya perlu membuat banyak objek dateTime untuk dengan mudah membandingkan nilai-nilai ini dan ini tampaknya sedikit operasi yang rumit secara komputasi.
Jawaban:
Tidak ada fungsi untuk mengurutkan berdasarkan
karena
getAllItems
berasal dariarray
objek dan menurut sayaconcept you cannot sort this by field.
Dalam hal ini, Anda dapat menggunakan
getItemsCollection().
lalu menggunakan fungsi sortir berdasarkan bidang apa punEdit:
Tulis ulang kelas Mage_Sales_Model_Quote
Akan lebih baik untuk menulis ulang kelas
Mage_Sales_Model_Quote
. Dalam panggilan ini magentocalled getAllItems()
berfungsi danetItemsCollection() function
responsif utama untuk mendapatkan semua item.Kelas menulis ulang:
Gunakan fungsi setOrder () untuk Sortir:
Fungsi setOrder () mengurutkan koleksi item berdasarkan bidang
sumber
Larutan:
Tulis ulang metode Anda
Mage_Sales_Model_Quote::getAllVisibleItems
dengan itu:Ditulis lebih awal:
Mungkin ini bukan solusi yang sangat baik dalam situasi ini, tetapi ingatlah itu. (Magento memiliki banyak tempat seperti itu di mana itu bisa berguna)
Di dalam metode getData () masukkan bidang apa saja yang ingin Anda urutkan. Dalam kasus Anda itu bisa
updated_at
. Dalam hal memasukkanupdated_at
lebih baik masukkan stempel waktunya.sumber