Magento 2.1
下記のブロックは現在 Magento\Checkout\Block\Onepage\Success
Magento 2.0
このページでネイティブに取得できる唯一のものは、でgetRealOrderId()
定義されたメソッドを使用した注文ID ですMagento\Checkout\Block\Success
したがって、注文IDを取得するには、テンプレートで次を呼び出すことができます。
$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();