Magento 2.1
Згаданий нижче блок зараз є Magento\Checkout\Block\Onepage\Success
Magento 2.0
Єдине, що ви можете завантажити на цій сторінці, це ідентифікатор замовлення за допомогою getRealOrderId()
методу, визначеного вMagento\Checkout\Block\Success
Таким чином, щоб отримати ідентифікатор замовлення, ви можете зателефонувати у своєму шаблоні:
$block->getRealOrderId();
Однак я розумію, що це не зовсім те, що потрібно.
У цьому випадку, незважаючи на те, що ви могли безпосередньо використовувати менеджер об'єктів, це не рекомендується. Ви повинні використовувати спеціальний модуль для визначення попередніх огорож для цього блоку .
В 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();