Magento 2 - Utilizzo di Object Manager
Ho un modulo che inserisce alcune informazioni sulla spedizione nella visualizzazione dell'ordine dell'amministratore. Sto cercando di visualizzare il metodo di spedizione corrente in questa sezione.
Ho questo in view / 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();
Funziona bene ma so che non è il modo corretto di utilizzare Object Manager. Qualcuno può aiutarmi a usarlo correttamente?
Grazie Stan
Risposte
Si prega di seguire i passaggi seguenti per ottenere il metodo di spedizione e i suoi dettagli nel file 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();
Per favore fatemi sapere se avete problemi.
Spero che questo ti possa aiutare.