Magento 2.1
บล็อกที่กล่าวถึงด้านล่างคือตอนนี้ Magento\Checkout\Block\Onepage\Success
Magento 2.0
สิ่งเดียวที่คุณสามารถเรียกคืนได้ในหน้านี้คือรหัสคำสั่งซื้อโดยใช้getRealOrderId()
วิธีที่กำหนดไว้Magento\Checkout\Block\Success
ดังนั้นในการรับรหัสคำสั่งซื้อคุณสามารถเรียกสิ่งต่อไปนี้ในแม่แบบของคุณ:
$block->getRealOrderId();
อย่างไรก็ตามฉันเข้าใจว่านั่นไม่ใช่สิ่งที่คุณต้องการ
ในกรณีนี้แม้ว่าคุณจะสามารถใช้ตัวจัดการวัตถุโดยตรงได้ แต่ก็ไม่แนะนำ คุณควรใช้โมดูลที่กำหนดเองเพื่อกำหนด prefences สำหรับบล็อกนี้
ในapp/code/Vendor/Module/etc/frontend/di.xml
คุณจำเป็นต้องใช้รหัสต่อไปนี้:
<?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>
จากนั้นใน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();
}
}
อย่าลืมเรื่องปกติ 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>
เช่นเดียวกับ app/code/Vendor/Module/registration.php
<?php
\Magento\Framework\Component\ComponentRegistrar::register(
\Magento\Framework\Component\ComponentRegistrar::MODULE,
'Vendor_Module',
__DIR__
);
เมื่อเสร็จแล้วและคุณได้รันคำสั่งต่อไปนี้:
php bin/magento module:enable Vendor_Module
php bin/magento setup:upgrade
คุณควรจะสามารถเรียกสิ่งต่อไปนี้ในแม่แบบของคุณ:
$block->getGrandTotal();
การเพิ่มวิธีการเพิ่มเติม
คุณสามารถเพิ่มสิ่งต่อไปนี้ซึ่งมีประโยชน์เมื่อติดตามไปยังคลาสบล็อก:
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();
}
จากนั้นคุณจะสามารถเรียกสิ่งต่อไปนี้จากเทมเพลตของคุณ:
$block->getSubtotal();
$block->getDiscountAmount();