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();