Magento 2.1
Il blocco di seguito indicato è ora Magento\Checkout\Block\Onepage\Success
Magento 2.0
L'unica cosa che puoi recuperare in modo nativo su questa pagina è l'id dell'ordine usando il getRealOrderId()
metodo definito inMagento\Checkout\Block\Success
Pertanto, per ottenere l'ID ordine è possibile chiamare quanto segue nel modello:
$block->getRealOrderId();
Tuttavia, capisco che non è esattamente ciò di cui hai bisogno.
In tal caso, anche se è possibile utilizzare direttamente la gestione oggetti, non è consigliabile. È necessario utilizzare un modulo personalizzato per definire le prefenze per questo blocco .
In app/code/Vendor/Module/etc/frontend/di.xml
è necessario il seguente codice:
<?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>
Quindi in 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();
}
}
Non dimenticare il solito 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>
Così come il app/code/Vendor/Module/registration.php
<?php
\Magento\Framework\Component\ComponentRegistrar::register(
\Magento\Framework\Component\ComponentRegistrar::MODULE,
'Vendor_Module',
__DIR__
);
Una volta che hai finito e hai eseguito i seguenti comandi:
php bin/magento module:enable Vendor_Module
php bin/magento setup:upgrade
Dovresti essere in grado di chiamare quanto segue nel tuo modello:
$block->getGrandTotal();
Aggiunta di più metodi
È possibile aggiungere quanto segue che può essere utile durante il tracciamento alla classe di blocco:
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();
}
Quindi sarai in grado di chiamare quanto segue dal tuo modello:
$block->getSubtotal();
$block->getDiscountAmount();