Magento Sipariş artışı Kimliği alın

7 Cevap php

Ben bağlı takibi için kullanabilirsiniz böylece ben success.phtml sayfasında, Magento Sipariş artışı kimliği almak için çalışıyorum.

Ben aşağıdaki kodu kullanarak ediyorum, ama ikinci satırda bir hata veriyor;

$order = Mage::getSingleton('sales/order')->getLastOrderId();
$lastOrderId = $order->getIncrementId();

Hata okur:

Ölümcül hata: satır 34-olmayan bir nesne üzerinde bir üye işlev getIncrementId () Call: $ LastOrderId = $ sipariş> getIncrementId ();

Herkes Sipariş artışı kimliği almak konusunda herhangi bir fikir olup olmadığını merak ediyorum? Bu admin görülen referans numarası, genellikle bir şey gibi: # 1000123

7 Cevap

Success.phtml - in - Özellikle ödeme başarı sayfasında bu yapıyorsanız o zaman kod müşteriye görüntülenir yana sipariş artışı kimliği, zaten şablonda kullanılabilir olsun.

Sadece aşağıdaki gerekir:

$orderId = $this->getOrderId();

Bu diğer sayfalarda çalışmaz unutmayın böylece, olanlar için, kullanmak gerekir:

$orderId = Mage::getSingleton('checkout/session')->getLastRealOrderId();

Kodunuzu $ sipariş işlevi adından da anlaşılacağı gibi ... son sipariş kimliğidir. Bu istediğiniz değer değilse, o zaman bir düzen yüklemek için kullanabilirsiniz ve bir o getter kullanın:

$order = Mage::getModel('sales/order');
$order->load(Mage::getSingleton('sales/order')->getLastOrderId());
$lastOrderId = $order->getIncrementId();

Sizin için çağrı

Mage::getSingleton('sales/order')

bir nesne döndürüyor değil. Denemek

var_dump(Mage::getSingleton('sales/order'));

Onaylamak için.

Geçenlerde çıkış koduna daldı değil, ama ben sales/order size ilerleme sipariş alacak çünkü eminim. Siparişin oldu kez devam artık bulunuyor.

Bunu yapmak için "doğru" yolu çıkış sırasında yangınları Magento olaylardan biri için bir gözlemci oluşturmak olacaktır.

checkout_onepage_controller_success_action

olay ödeme işlemi çok fazla özelleştirme yapmadıysanız varsayarak, yeterli olmalıdır.

Bu nasıl bir veciz bir açıklaması var the Wiki (farklı bir olay için)

Eğer olay kurulum almak ve yanıt, bir kez yapın

$event = $observer->getEvent();
var_dump($event->getData());

Eğer mevcut bilgilerin ne tür görmek için. Şansını sonra konum kimliği almak sağlayacak orada bir düzen nesne var oldular.

Ben kullanmak zorunda kaldım ...

$_order = Mage::getModel('sales/order')->loadByIncrementId($this->getOrderId());

Success.phtml şablonda iken. Bunun yerine yük () I loadByIncrementId kullanılan - sonra benim sipariş nesnesi boş artık oldu.

getRealOrderId() veri ızgaraları olarak sunulan sipariş sayısını döndürmek için görünür. getId() muhtemelen istemediğiniz, veritabanı satır iç id dönecektir.

Bu şimdi benim modülünde bu bir çalışan değilim, mükemmel çalışacaktır.

$last_order_increment_id = Mage::getModel("sales/order")->getCollection()->getLastItem()->getIncrementId();

Bunun sayesinde yardımcı olur umarım. :)

Eğer yönetici modunda iseniz - bu deneyin:

$orderModel = Mage::getModel('sales/order'); $orders = $orderModel->getCollection()->setOrder('increment_id', 'DESC')->setPageSize(1)->setCurPage(1); $orderId = $orders->getFirstItem()->getIncrementId();