Вот как я получаю элементы корзины:
$quote = Mage::getModel('checkout/cart')->getQuote();
$items=$quote->getAllitems();
Я хотел бы сделать что-то вроде этого:
$items->sortBy('updated_at','desc');
Как правильно это сделать?
Я испытываю желание сделать что-то вроде этого:
$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
}
Однако мне нужно было создать кучу объектов dateTime для того, чтобы легко сравнивать эти значения, и это кажется немного трудоемкой вычислительной операцией.
Ответы:
Там нет функции сортировать по
из-за
getAllItems
прихода отarray
объекта и в соответствии с моимconcept you cannot sort this by field.
В этом случае вы можете использовать, а
getItemsCollection().
затем использовать функцию сортировки seOrder по любому полю.Редактировать:
Переписать класс Mage_Sales_Model_Quote
Это будет лучшее представление о том , чтобы переписать класс
Mage_Sales_Model_Quote
.В этот вызов Magento являетсяcalled getAllItems()
функция и гetItemsCollection() function
основной отзывчивым для получения всех элементов.Переписать класс:
Используйте функцию setOrder () для сортировки:
Функция setOrder () сортирует коллекцию элементов по полям
источник
Решение:
Перепишите свой метод
Mage_Sales_Model_Quote::getAllVisibleItems
с ним:Написано рано:
Возможно, это не очень хорошее решение в этой ситуации, но имейте это в виду. (У Magento есть много таких мест, где это может быть полезно)
Внутри метода getData () поместите любое поле, которое вы хотите отсортировать. В вашем случае это может быть
updated_at
. В случае вставкиupdated_at
лучше вставить свою метку времени.источник