Magento 2.1
Blok wymieniony poniżej jest teraz Magento\Checkout\Block\Onepage\Success
Magento 2.0
Jedyną rzeczą, którą możesz pobrać natywnie na tej stronie, jest identyfikator zamówienia przy użyciu getRealOrderId()
metody zdefiniowanej wMagento\Checkout\Block\Success
Tak więc, aby uzyskać identyfikator zamówienia, możesz wywołać następujące elementy w swoim szablonie:
$block->getRealOrderId();
Rozumiem jednak, że nie jest to dokładnie to, czego potrzebujesz.
W takim przypadku, nawet jeśli można bezpośrednio użyć menedżera obiektów, nie jest to zalecane. Należy użyć niestandardowego modułu do zdefiniowania preferencji dla tego bloku .
W app/code/Vendor/Module/etc/frontend/di.xml
potrzebujesz następujący kod:
<?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>
Następnie w 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();
}
}
Nie zapomnij o zwykłym 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>
Tak dobrze jak app/code/Vendor/Module/registration.php
<?php
\Magento\Framework\Component\ComponentRegistrar::register(
\Magento\Framework\Component\ComponentRegistrar::MODULE,
'Vendor_Module',
__DIR__
);
Po zakończeniu i uruchomieniu następujących poleceń:
php bin/magento module:enable Vendor_Module
php bin/magento setup:upgrade
W szablonie powinno być możliwe wywoływanie następujących elementów:
$block->getGrandTotal();
Dodając więcej metod
Możesz dodać następujące elementy, które mogą być przydatne podczas śledzenia do klasy bloku:
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();
}
Następnie będziesz mógł wywoływać następujące elementy ze swojego szablonu:
$block->getSubtotal();
$block->getDiscountAmount();