如何在Magento的销售订单视图中添加新选项卡

时间:2014-06-06 11:58:10

标签: php xml magento

Reference article


将上述代码段更改为此选项以在销售订单视图中添加标签

<?xml version="1.0"?>
 <layout>
    <adminhtml_sales_order_view>
       <reference name="sales_order_tabs">
           <action method="addTab">
               <name>my_custom_tab</name>
               <block>customtabs/adminhtml_sales_order_tab</block>
           </action>
       </reference>
    </adminhtml_sales_order_view>
</layout>

<?php

class Fishpig_Customtabs_Block_Adminhtml_Sales_Order_Tab
extends Mage_Adminhtml_Block_Template
implements Mage_Adminhtml_Block_Widget_Tab_Interface {

重要提示:请更改目录结构

2 个答案:

答案 0 :(得分:0)

看看@ Custom tab on sales order viewHow to create sales order custom tab in magento 1.8.0.1

文件夹结构应该是(在需要时Fishpig替换您添加到local

的文件夹名称
  

Fishpig_Customtabs_Block_Adminhtml_Sales_Order_Tab   /应用程序/代码/本地/ Fishpig / Customtabs / [块/ dminhtml /销售/订购/标签

答案 1 :(得分:0)

在管理面板的Magento 2,“销售订单”页面中,“本地”提供了“许多选项卡”,例如“信息”,“发票”,“发货”,“贷项通知单”,“交易”和“评论历史记录”。

对于您的自定义要求,您需要在“订单”页面中添加额外的标签,您可以通过简单的模块在“管理订单视图”页面中添加您的自定义标签。

您需要创建用于添加额外标签的简单模块。

有关添加额外标签的信息,请参见以下代码段, 为了简单起见,我将Rbj作为包名称,将OrderTab作为模块名称。 您需要创建第一个 registration.php module.xml 文件来定义我们的模块。

路径: app / code / Rbj / OrderTab / registration.php

<?php
   \Magento\Framework\Component\ComponentRegistrar::register(
   \Magento\Framework\Component\ComponentRegistrar::MODULE,
   'Rbj_OrderTab',
   __DIR__
);

创建 module.xml 文件,路径: app / code / Rbj / OrderTab / etc / module.xml

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
    <module name="Rbj_OrderTab" setup_version="2.0.0">
        <sequence>
            <module name="Magento_Sales"/>
        </sequence>
    </module>
</config>

我们添加了对Magento Sales Module的依赖关系以添加新标签。因此,我们在上述XML文件的序列标签中定义了 Magento_Sales 模块。

现在是模块的主要入口点, 对于“添加新标签”,我们必须覆盖 sales_order_view.xml 文件,以添加添加自定义标签的逻辑。

参考栏 sales_order_tabs 包含标签列表。因此我们需要在下面的路径中的模块中创建 sales_order_view.xml 文件

路径: app / code / Rbj / OrderTab / 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_tabs">
            <action method="addTab">
                <argument name="name" xsi:type="string">custom_tabs</argument>
                <argument name="block" xsi:type="string">Rbj\OrderTab\Block\Adminhtml\OrderEdit\Tab\View</argument>
            </action>
        </referenceBlock>
    </body>
</page>

在上面的文件中,我们已声明“阻止文件”以设置您的自定义逻辑,您想在自定义标签中显示。

创建一个新的Block PHP文件,路径: app / code / Rbj / OrderTab / Block / Adminhtml / OrderEdit / Tab / View.php

<?php
namespace Rbj\OrderTab\Block\Adminhtml\OrderEdit\Tab;

/**
 * Order custom tab
 *
 */
class View extends \Magento\Backend\Block\Template implements \Magento\Backend\Block\Widget\Tab\TabInterface
{
    protected $_template = 'tab/view/my_order_info.phtml';

    /**
     * View constructor.
     * @param \Magento\Backend\Block\Template\Context $context
     * @param \Magento\Framework\Registry $registry
     * @param array $data
     */
    public function __construct(
        \Magento\Backend\Block\Template\Context $context,
        \Magento\Framework\Registry $registry,
        array $data = []
    ) {
        $this->_coreRegistry = $registry;
        parent::__construct($context, $data);
    }

    /**
     * Retrieve order model instance
     *
     * @return \Magento\Sales\Model\Order
     */
    public function getOrder()
    {
        return $this->_coreRegistry->registry('current_order');
    }
    /**
     * Retrieve order model instance
     *
     * @return \Magento\Sales\Model\Order
     */
    public function getOrderId()
    {
        return $this->getOrder()->getEntityId();
    }

    /**
     * Retrieve order increment id
     *
     * @return string
     */
    public function getOrderIncrementId()
    {
        return $this->getOrder()->getIncrementId();
    }
    /**
     * {@inheritdoc}
     */
    public function getTabLabel()
    {
        return __('My Custom Tab');
    }

    /**
     * {@inheritdoc}
     */
    public function getTabTitle()
    {
        return __('My Custom Tab');
    }

    /**
     * {@inheritdoc}
     */
    public function canShowTab()
    {
        return true;
    }

    /**
     * {@inheritdoc}
     */
    public function isHidden()
    {
        return false;
    }
}

在文件上方,我们可以使用 $ _ template 变量声明模板文件。

受保护的 $ _ template =‘tab / view / my_order_info.phtml’用于我们的自定义标签的模板文件。

您可以通过 getTabLabel ()设置“自定义标签”标签,并使用 getTabTitle ()函数设置标题。您可以在上述文件中定义自定义功能。

您可以通过调用 Magento \ Framework \ Registry 对象获取当前订单数据。

现在我们需要创建模板文件, 路径: app / code / Rbj / OrderTab / view / adminhtml / templates / tab / view / my_order_info.phtml

<?php
/**
 * @var $block \Rbj\OrderTab\Block\Adminhtml\OrderEdit\Tab\View
 */
?>

<div class="fieldset-wrapper order-information">
    <div class="fieldset-wrapper-title">
        <span class="title"><?php /* @escapeNotVerified */
            echo __('Information for new Order tab') ?></span>
    </div>
    <table class="admin__table-secondary">
        <tbody>
        <?php echo $block->getChildHtml(); ?>
        <tr>
            <th><?php /* @escapeNotVerified */
                echo __('Order ID:') ?></th>
            <td><?php echo $block->getOrderIncrementId(); ?></td>
        </tr>
        <tr>
            <th><?php /* @escapeNotVerified */
                echo __('Last History:') ?></th>
            <td><?php echo __('History of order') ?></td>
        </tr>
        </tbody>
    </table>
</div>

现在运行“升级”命令以安装我们的模块。

php bin / magento设置:升级 php bin / magento缓存:刷新

现在转到“管理”面板,使用您的凭据登录, 点击左侧边栏,销售->订单链接, 单击任何订单,您可以在“订单视图”页面中获得最后一个标签作为新的自定义标签。

在“销售订单”页面中检查“自定义”标签,

enter image description here Tnx