Magento 2.1
Le bloc mentionné ci-dessous est maintenant Magento\Checkout\Block\Onepage\Success
Magento 2.0
La seule chose que vous pouvez récupérer en mode natif sur cette page est l'ID de commande à l'aide de la getRealOrderId()
méthode définie dansMagento\Checkout\Block\Success
Ainsi, pour obtenir l'ID de commande, vous pouvez appeler ce qui suit dans votre modèle:
$block->getRealOrderId();
Cependant, je comprends que ce n'est pas exactement ce dont vous avez besoin.
Dans ce cas, même si vous pouvez utiliser directement le gestionnaire d'objets, il n'est pas recommandé. Vous devez utiliser un module personnalisé pour définir les préférences de ce bloc .
En app/code/Vendor/Module/etc/frontend/di.xml
vous avez besoin le code suivant:
<?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>
Puis dans 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'oubliez pas l'habituel 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>
Aussi bien que app/code/Vendor/Module/registration.php
<?php
\Magento\Framework\Component\ComponentRegistrar::register(
\Magento\Framework\Component\ComponentRegistrar::MODULE,
'Vendor_Module',
__DIR__
);
Une fois que vous avez terminé et que vous avez exécuté les commandes suivantes:
php bin/magento module:enable Vendor_Module
php bin/magento setup:upgrade
Vous devriez pouvoir appeler les éléments suivants dans votre modèle:
$block->getGrandTotal();
Ajouter plus de méthodes
Vous pouvez ajouter les éléments suivants qui peuvent être utiles lors du suivi dans la classe de bloc:
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();
}
Ensuite, vous pourrez appeler ce qui suit à partir de votre modèle:
$block->getSubtotal();
$block->getDiscountAmount();