Php Magento 2-从shipping中的自定义字段获取数据,并在Admin中显示>;销售>;订单和电子邮件
我创建了一个模块,该模块在结账时发货中显示自定义字段,并将数据保存在quote和sales order表中的数据库中,我可以确认数据是否存在。我试图得到的数据显示在管理员时,订单被查看,并在确认电子邮件发出。我有它,所以模板在管理命令视图中显示回显文本,而不是数据库中的数据。目前电子邮件中没有显示任何内容,但我想先修复查看顺序中的数据的问题 要分解它,我在DB中的两个表中有数据,需要在admin中的orders中显示它。我在extension_attributes.xml中有字段 这些字段在Plugin>Quote>SaveToQuote.php中保存到数据库:Php Magento 2-从shipping中的自定义字段获取数据,并在Admin中显示>;销售>;订单和电子邮件,php,magento2,shipping-method,Php,Magento2,Shipping Method,我创建了一个模块,该模块在结账时发货中显示自定义字段,并将数据保存在quote和sales order表中的数据库中,我可以确认数据是否存在。我试图得到的数据显示在管理员时,订单被查看,并在确认电子邮件发出。我有它,所以模板在管理命令视图中显示回显文本,而不是数据库中的数据。目前电子邮件中没有显示任何内容,但我想先修复查看顺序中的数据的问题 要分解它,我在DB中的两个表中有数据,需要在admin中的orders中显示它。我在extension_attributes.xml中有字段 这些字段在Pl
class SaveToQuote
{
/**
* @var QuoteRepository
*/
protected $quoteRepository;
/**
* SaveToQuote constructor.
* @param QuoteRepository $quoteRepository
*/
public function __construct(
QuoteRepository $quoteRepository
) {
$this->quoteRepository = $quoteRepository;
}
/**
* @param \Magento\Checkout\Model\ShippingInformationManagement $subject
* @param $cartId
* @param \Magento\Checkout\Api\Data\ShippingInformationInterface $addressInformation
*/
public function beforeSaveAddressInformation(
\Magento\Checkout\Model\ShippingInformationManagement $subject,
$cartId,
\Magento\Checkout\Api\Data\ShippingInformationInterface $addressInformation
) {
if(!$extAttributes = $addressInformation->getExtensionAttributes())
return;
$quote = $this->quoteRepository->getActive($cartId);
$quote->setInputRoomShippingField($extAttributes->getInputRoomShippingField());
$quote->setInputFloorShippingField($extAttributes->getInputFloorShippingField());
$quote->setDateCustomShippingField($extAttributes->getDateCustomShippingField());
$quote->setSelectCustomShippingField($extAttributes->getSelectCustomShippingField());
}
}
但这里是我想出了什么来查看数据的顺序在管理中,迄今为止没有运气
第一个-查看>管理HTML>布局>销售订单查看.xml
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="admin-2columns-left" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<body>
<referenceBlock name="order_info">
<block class="xxx\xxx\Block\Adminhtml\Order\View\OrderView" name="sales_order_view_custom" template="xxx_xxx::shipping_info.phtml" />
</referenceBlock>
</body>
我想我需要上面的信息,这样我可以调用$block
下一步-Observer>ShippingDataToAdminObserver.php
namespace xxx\xxx\Observer;
use Magento\Framework\Event\Observer as EventObserver;
use Magento\Framework\Event\ObserverInterface;
class ShippingDataToAdminObserver implements ObserverInterface
{
/**
* @var \Magento\Framework\ObjectManagerInterface
*/
protected $_block;
/**
* @param \Magento\Framework\View\Element\Template $block
*/
public function __construct(
\Magento\Framework\View\Element\Template $block
)
{
$this->_block = $block;
}
/**
* @param EventObserver $observer
*/
public function execute(EventObserver $observer)
{
if($observer->getElementName() == 'order_shipping_view')
{
$orderShippingViewBlock = $observer->getLayout()->getBlock($observer->getElementName());
$order = $orderShippingViewBlock->getOrder();
$RoomDeliveryBlock = $this->_block;
$RoomDeliveryBlock->setTemplate('xxx_xxx::shipping_info.phtml');
$html = $observer->getTransport()->getOutput() . $RoomDeliveryBlock->toHtml();
$observer->getTransport()->setOutput($html);
}
}
}
使用上面的命令获取要在admin>sales>order中显示的数据,并使用上面的OrderView.php。我看到的是文本,但不是数据
正如我所说,我正在尝试获取数据库中的数据(存在),以显示在管理员的订单上,并最终显示在电子邮件中
我不知道这是否太让人困惑而无法得到帮助。非常感谢您的任何想法。我正在努力。如果有人有问题,就把它们贴出来,我会尽力回答。这是太多的代码粘贴在这里。我有这个工作。如果有人有问题,就把它们贴出来,我会尽力回答。这里粘贴的代码太多了。
namespace xxx\xxx\Block\Adminhtml\Order\View;
class OrderView extends \Magento\Backend\Block\Template
{
}
namespace xxx\xxx\Observer;
use Magento\Framework\Event\Observer as EventObserver;
use Magento\Framework\Event\ObserverInterface;
class ShippingDataToAdminObserver implements ObserverInterface
{
/**
* @var \Magento\Framework\ObjectManagerInterface
*/
protected $_block;
/**
* @param \Magento\Framework\View\Element\Template $block
*/
public function __construct(
\Magento\Framework\View\Element\Template $block
)
{
$this->_block = $block;
}
/**
* @param EventObserver $observer
*/
public function execute(EventObserver $observer)
{
if($observer->getElementName() == 'order_shipping_view')
{
$orderShippingViewBlock = $observer->getLayout()->getBlock($observer->getElementName());
$order = $orderShippingViewBlock->getOrder();
$RoomDeliveryBlock = $this->_block;
$RoomDeliveryBlock->setTemplate('xxx_xxx::shipping_info.phtml');
$html = $observer->getTransport()->getOutput() . $RoomDeliveryBlock->toHtml();
$observer->getTransport()->setOutput($html);
}
}
}