Magento 2 - การใช้ Object Manager
ฉันมีโมดูลที่ใส่ข้อมูลการจัดส่งบางส่วนในมุมมองคำสั่งซื้อของผู้ดูแลระบบ ฉันกำลังพยายามแสดงวิธีการจัดส่งปัจจุบันในส่วนนี้
ฉันมีสิ่งนี้ใน 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();
วิธีนี้ใช้ได้ดี แต่ฉันรู้ว่าไม่ใช่วิธีที่เหมาะสมในการใช้ Object Manager มีใครช่วยฉันใช้อย่างถูกต้องได้ไหม
ขอบคุณสแตน
คำตอบ
โปรดทำตามขั้นตอนด้านล่างเพื่อรับวิธีการจัดส่งและรายละเอียดในไฟล์ 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();
โปรดแจ้งให้เราทราบหากคุณประสบปัญหาใด ๆ
ฉันหวังว่านี่จะช่วยคุณได้