Magento 2.1
Blok yang disebutkan di bawah sekarang Magento\Checkout\Block\Onepage\Success
Magento 2.0
Satu-satunya hal yang dapat Anda ambil secara asli di halaman ini adalah id pesanan menggunakan getRealOrderId()
metode yang ditentukan dalamMagento\Checkout\Block\Success
Dengan demikian, untuk mendapatkan id pesanan Anda dapat memanggil yang berikut ini di templat Anda:
$block->getRealOrderId();
Namun, saya mengerti bukan itu yang Anda butuhkan.
Dalam hal ini, meskipun Anda bisa menggunakan manajer objek secara langsung, itu tidak dianjurkan. Anda harus menggunakan modul khusus untuk menentukan preferensi untuk blok ini .
Dalam app/code/Vendor/Module/etc/frontend/di.xml
Anda memerlukan kode berikut:
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<preference for="Magento\Checkout\Block\Success"
type="Vendor\Module\Block\Checkout\Success"/>
</config>
Kemudian di app/code/Vendor/Module/Block/Checkout/Success.php
:
<?php
namespace Vendor\Module\Block\Checkout;
class Success extends \Magento\Checkout\Block\Success
{
/**
* @return int
*/
public function getGrandTotal()
{
/** @var \Magento\Sales\Model\Order $order */
$order = $this->_orderFactory->create()->load($this->getLastOrderId());
return $order->getGrandTotal();
}
}
Jangan lupakan yang biasa app/code/Vendor/Module/etc/module.xml
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
<module name="Vendor_Module" setup_version="0.0.1" />
</config>
Serta app/code/Vendor/Module/registration.php
<?php
\Magento\Framework\Component\ComponentRegistrar::register(
\Magento\Framework\Component\ComponentRegistrar::MODULE,
'Vendor_Module',
__DIR__
);
Setelah selesai dan Anda telah menjalankan perintah berikut:
php bin/magento module:enable Vendor_Module
php bin/magento setup:upgrade
Anda harus dapat memanggil yang berikut ini di templat Anda:
$block->getGrandTotal();
Menambahkan lebih banyak metode
Anda dapat menambahkan berikut ini yang dapat berguna saat melacak ke kelas blok:
public function getSubtotal()
{
/** @var \Magento\Sales\Model\Order $order */
$order = $this->_orderFactory->create()->load($this->getLastOrderId());
return $order->getSubtotal();
}
public function getDiscountAmount()
{
/** @var \Magento\Sales\Model\Order $order */
$order = $this->_orderFactory->create()->load($this->getLastOrderId());
return $order->getDiscountAmount();
}
Maka Anda akan dapat memanggil yang berikut dari templat Anda:
$block->getSubtotal();
$block->getDiscountAmount();