Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Magento 2-从shipping中的自定义字段获取数据,并在Admin中显示>;销售>;订单和电子邮件_Php_Magento2_Shipping Method - Fatal编程技术网

Php Magento 2-从shipping中的自定义字段获取数据,并在Admin中显示>;销售>;订单和电子邮件

Php Magento 2-从shipping中的自定义字段获取数据,并在Admin中显示>;销售>;订单和电子邮件,php,magento2,shipping-method,Php,Magento2,Shipping Method,我创建了一个模块,该模块在结账时发货中显示自定义字段,并将数据保存在quote和sales order表中的数据库中,我可以确认数据是否存在。我试图得到的数据显示在管理员时,订单被查看,并在确认电子邮件发出。我有它,所以模板在管理命令视图中显示回显文本,而不是数据库中的数据。目前电子邮件中没有显示任何内容,但我想先修复查看顺序中的数据的问题 要分解它,我在DB中的两个表中有数据,需要在admin中的orders中显示它。我在extension_attributes.xml中有字段 这些字段在Pl

我创建了一个模块,该模块在结账时发货中显示自定义字段,并将数据保存在quote和sales order表中的数据库中,我可以确认数据是否存在。我试图得到的数据显示在管理员时,订单被查看,并在确认电子邮件发出。我有它,所以模板在管理命令视图中显示回显文本,而不是数据库中的数据。目前电子邮件中没有显示任何内容,但我想先修复查看顺序中的数据的问题

要分解它,我在DB中的两个表中有数据,需要在admin中的orders中显示它。我在extension_attributes.xml中有字段

这些字段在Plugin>Quote>SaveToQuote.php中保存到数据库:

  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);
        }
    }
}