I've recently created a customer attribute for my Magento ver. 2.3.5-p1 instance using the following blog:
https://www.blog.sashas.org/magento-2-1-3-how-to-make-customer-attribute-update.html
The module has worked properly and created a new customer attribute with the i.d. "trade_ordernumber".
I would now like to add this attribute to the checkout success page but I'm not sure how to do this, what I was thinking was something like the below:
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
?>
<?php /** @var $block \Magento\Checkout\Block\Onepage\Success */ ?>
<div class="checkout-success">
<?php if ($block->getOrderId()) :?>
<?php if ($block->getCanViewOrder()) :?>
<h1><?= $block->escapeHtml(__('Your order # is: <span>%1</span>.', $block->getOrderId()), ['span']) ?></h1>
<p><?= $block->escapeHtml(__('Your order number is: %1.', sprintf('<a href="%s" class="order-number"><strong>%s</strong></a>', $block->escapeUrl($block->getViewOrderUrl()), $block->getOrderId())), ['a', 'strong']) ?></p>
<?php else :?>
<p><?= $block->escapeHtml(__('Your order # is: <span>%1</span>.', $block->getOrderId()), ['span']) ?></p>
<?php endif;?>
<p><?= $block->escapeHtml(__('We\'ll email you an order confirmation with details and tracking info.')) ?></p>
<?php endif;?>
<?= $block->getAdditionalInfoHtml() ?>
<div class="actions-toolbar">
<div class="primary">
<a class="action primary continue" href="<?= $block->escapeUrl($block->getContinueUrl()) ?>"><span><?= $block->escapeHtml(__('Continue Shopping')) ?></span></a>
</div>
</div>
</div>
<?php
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$storeManager = $objectManager->get('\Magento\Store\Model\StoreManagerInterface');
$storeID = $storeManager->getStore()->getStoreId();
$storeName = $storeManager->getStore()->getName();
?>
<?php
$customerSession = $objectManager->get('Magento\Customer\Model\Session');
if($customerSession->isLoggedIn()) {
echo $customerSession->getAttribute('trade_ordernumber');
}
?>
Edit 7/8/2020
Thanks to Vivek Kumar for his solution. I am currently trying to create a solution which does not involve the object manager. So far Hello. Thank you for replying. I'm still having a couple of issues. Which I'll outline below.
I have created a new module with the following file structure:
The code in the files is as follows
registration.php
<?php
\Magento\Framework\Component\ComponentRegistrar::register(
\Magento\Framework\Component\ComponentRegistrar::MODULE,
'CustomTrade_CallAttribute',
__DIR__
);
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="CustomTrade_CallAttribute" >
</module>
</config>
Data.php
<?php
namespace CustomTrade\CallAttribute\Helper;
use Magento\Framework\App\Helper\Context;
use Magento\Customer\Api\CustomerRepositoryInterface;
use Magento\Customer\Model\Session as CustomerSession;
class Data extends AbstractHelper
{
protected $customerRepository;
public function __construct(
Context $context,
CustomerRepositoryInterface $customerRepository,
CustomeSession $customerSession
)
{
$this->customerRepository = $customerRepository;
$this->customerSession = $customerSession;
parent::__construct($context);
}
public function getOrderNumberValue()
{
$customerId = $this->customerSession->getCustomer()->getId();
$customer = $this->customerRepository->getById($customerId);
return $customer->getData('trade_ordernumber');
}
}
And I have modified the success.phtml file in the following way
<?php
/**
* Copyright ? Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
?>
<?php /** @var $block \Magento\Checkout\Block\Onepage\Success */ ?>
<div class="checkout-success">
<?php if ($block->getOrderId()) :?>
<?php if ($block->getCanViewOrder()) :?>
<h1><?= $block->escapeHtml(__('Your order # is: <span>%1</span>.', $block->getOrderId()), ['span']) ?></h1>
<p><?= $block->escapeHtml(__('Your order number is: %1.', sprintf('<a href="%s" class="order-number"><strong>%s</strong></a>', $block->escapeUrl($block->getViewOrderUrl()), $block->getOrderId())), ['a', 'strong']) ?></p>
<?php else :?>
<p><?= $block->escapeHtml(__('Your order # is: <span>%1</span>.', $block->getOrderId()), ['span']) ?></p>
<?php endif;?>
<p><?= $block->escapeHtml(__('We\'ll email you an order confirmation with details and tracking info.')) ?></p>
<?php endif;?>
<?= $block->getAdditionalInfoHtml() ?>
<div class="actions-toolbar">
<div class="primary">
<a class="action primary continue" href="<?= $block->escapeUrl($block->getContinueUrl()) ?>"><span><?= $block->escapeHtml(__('Continue Shopping')) ?></span></a>
</div>
</div>
</div>
<?php
$dataHelper = $this->helper('CustomTrade\CallAttribute\Helper\Data');
echo $dataHelper->getOrderNumberValue();
?>
Edit 3 20/08/2020
Finally seem to have this working now I now seem to have gotten this working: the Data.php file now looks as follows
<?php
namespace CustomTrade\CallAttribute\Helper;
use Magento\Framework\App\Helper\Context;
use Magento\Customer\Api\CustomerRepositoryInterface;
use Magento\Customer\Model\Session as CustomerSession;
use Magento\Framework\App\Helper\AbstractHelper;
class Data extends AbstractHelper
{
protected $customerRepository;
public function __construct(
Context $context,
CustomerRepositoryInterface $customerRepository,
CustomerSession $customerSession
)
{
$this->customerRepository = $customerRepository;
$this->customerSession = $customerSession;
parent::__construct($context);
}
public function getOrderNumberValue()
{
$customerId = $this->customerSession->getCustomer()->getId();
$customer = $this->customerRepository->getById($customerId);
return $customer->getCustomAttribute('trade_ordernumber')->getValue();
}
}
And the success.phtml file is here
<?php
/**
* Copyright ? Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
?>
<?php /** @var $block \Magento\Checkout\Block\Onepage\Success */ ?>
<div class="checkout-success">
<?php if ($block->getOrderId()) :?>
<?php if ($block->getCanViewOrder()) :?>
<h1><?= $block->escapeHtml(__('Your order # is: <span>%1</span>.', $block->getOrderId()), ['span']) ?></h1>
<p><?= $block->escapeHtml(__('Your order number is: %1.', sprintf('<a href="%s" class="order-number"><strong>%s</strong></a>', $block->escapeUrl($block->getViewOrderUrl()), $block->getOrderId())), ['a', 'strong']) ?></p>
<?php else :?>
<p><?= $block->escapeHtml(__('Your order # is: <span>%1</span>.', $block->getOrderId()), ['span']) ?></p>
<?php endif;?>
<p><?= $block->escapeHtml(__('We\'ll email you an order confirmation with details and tracking info.')) ?></p>
<?php endif;?>
<?= $block->getAdditionalInfoHtml() ?>
<div class="actions-toolbar">
<div class="primary">
<a class="action primary continue" href="<?= $block->escapeUrl($block->getContinueUrl()) ?>"><span><?= $block->escapeHtml(__('Continue Shopping')) ?></span></a>
</div>
</div>
</div>
<?php
$dataHelper = $this->helper('CustomTrade\CallAttribute\Helper\Data');
echo $dataHelper->getOrderNumberValue();
?>
This seems to produce the correct result.