Magento 2.1
O bloco mencionado abaixo está agora Magento\Checkout\Block\Onepage\Success
Magento 2.0
A única coisa que você pode recuperar nativamente nesta página é o ID do pedido usando o getRealOrderId()
método definido emMagento\Checkout\Block\Success
Portanto, para obter o ID do pedido, você pode chamar o seguinte em seu modelo:
$block->getRealOrderId();
No entanto, entendo que não é exatamente o que você precisa.
Nesse caso, mesmo que você possa usar o gerenciador de objetos diretamente, isso não é recomendado. Você deve usar um módulo personalizado para definir preferências para este bloco .
Em app/code/Vendor/Module/etc/frontend/di.xml
que você precisa o seguinte código:
<?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>
Então em 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();
}
}
Não esqueça o habitual 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>
Assim como o app/code/Vendor/Module/registration.php
<?php
\Magento\Framework\Component\ComponentRegistrar::register(
\Magento\Framework\Component\ComponentRegistrar::MODULE,
'Vendor_Module',
__DIR__
);
Depois de concluir e executar os seguintes comandos:
php bin/magento module:enable Vendor_Module
php bin/magento setup:upgrade
Você deve chamar o seguinte no seu modelo:
$block->getGrandTotal();
Adicionando mais métodos
Você pode adicionar o seguinte que pode ser útil ao rastrear a classe de bloco:
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();
}
Em seguida, você poderá chamar o seguinte no seu modelo:
$block->getSubtotal();
$block->getDiscountAmount();