Magento 2 - Utilisation du gestionnaire d'objets
J'ai un module qui place des informations d'expédition dans la vue des commandes de l'administrateur. J'essaie d'afficher la méthode d'expédition actuelle dans cette section.
J'ai ceci en vue / adminhtml / templates / order / view / custom_fields.phtml:
$orderId = $this->getRequest()->getParam('order_id');
$objectManager = \Magento\Framework\App\ObjectManager::getInstance(); $order = $objectManager->create('Magento\Sales\Api\Data\OrderInterface')->load($orderId);
$shippingMethod = $order->getShippingDescription();
echo 'Shipping is ' . $order->getShippingMethod();
Cela fonctionne bien mais je sais que ce n'est pas la bonne façon d'utiliser Object Manager. Quelqu'un peut-il m'aider à l'utiliser correctement?
Merci, Stan
Réponses
Veuillez suivre les étapes ci-dessous pour obtenir la méthode d'expédition et ses détails dans un fichier phtml.
app / code / Test / RoomDelivery / view / adminhtml / layout / sales_order_view.xml
<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<body>
<referenceBlock name="sales_order_edit">
<block class="Test\RoomDelivery\Block\Adminhtml\Order\CustomFields" name="order_custom_fields" template="Test_RoomDelivery::order/view/custom_fields.phtml" />
</referenceBlock>
</body>
</page>
app / code / Test / RoomDelivery / Block / Adminhtml / Order / CustomFields.php
declare(strict_types=1);
namespace Test\RoomDelivery\Block\Adminhtml\Order;
use Magento\Framework\View\Element\Template;
use Magento\Framework\View\Element\Template\Context;
use Magento\Framework\Registry;
use Magento\Sales\Model\Order;
/**
* Class CustomFields
*
* @category Block/Order
* @package Test\RoomDelivery\Block\Adminhtml\Order
*/
class CustomFields extends Template
{
/**
* Core registry
*
* @var Registry
*/
protected $coreRegistry = null; /** * CustomFieldsRepositoryInterface * * @var CustomFieldsRepositoryInterface */ protected $customFieldsRepository;
/**
* CustomFields constructor.
*
* @param Context $context Context * @param Registry $registry Registry
* @param CustomFieldsRepositoryInterface $customFieldsRepository CustomFieldsRepositoryInterface * @param array $data Data
*/
public function __construct(
Context $context, Registry $registry,
array $data = [] ) { $this->coreRegistry = $registry; parent::__construct($context, $data); } /** * Get current order * * @return Order */ public function getOrder() : Order { return $this->coreRegistry->registry('current_order');
}
}
app / code / Test / RoomDelivery / view / adminhtml / templates / order / view / custom_fields.phtml
$order = $block->getOrder();
$orderDetails = $order->getId();
echo 'details ' . $orderDetails . '<br />'; echo $order->getShippingDescription();
Veuillez me faire savoir si vous rencontrez un problème.
J'espère que cela t'aidera.