Magento 2.1
Các khối được đề cập dưới đây là bây giờ Magento\Checkout\Block\Onepage\Success
Magento 2.0
Điều duy nhất bạn có thể truy xuất tự nhiên trên trang này là id thứ tự sử dụng getRealOrderId()
phương thức được xác định trongMagento\Checkout\Block\Success
Vì vậy, để có được id đơn hàng, bạn có thể gọi như sau trong mẫu của mình:
$block->getRealOrderId();
Tuy nhiên, tôi hiểu đó không chính xác là những gì bạn cần.
Trong trường hợp đó, mặc dù bạn có thể sử dụng trình quản lý đối tượng trực tiếp, nhưng điều đó không được khuyến khích. Bạn nên sử dụng một mô-đun tùy chỉnh để xác định các tiền đề cho khối này .
Trong app/code/Vendor/Module/etc/frontend/di.xml
bạn cần mã sau đây:
<?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>
Sau đó trong 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();
}
}
Đừng quên thông thường 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>
Cũng như app/code/Vendor/Module/registration.php
<?php
\Magento\Framework\Component\ComponentRegistrar::register(
\Magento\Framework\Component\ComponentRegistrar::MODULE,
'Vendor_Module',
__DIR__
);
Khi bạn đã hoàn tất và bạn đã chạy các lệnh sau:
php bin/magento module:enable Vendor_Module
php bin/magento setup:upgrade
Bạn sẽ có thể gọi như sau trong mẫu của bạn:
$block->getGrandTotal();
Thêm nhiều phương thức
Bạn có thể thêm các mục sau có thể hữu ích khi theo dõi vào lớp khối:
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();
}
Sau đó, bạn sẽ có thể gọi như sau từ mẫu của bạn:
$block->getSubtotal();
$block->getDiscountAmount();