当前位置: 技术文章>> magento2中的TimelineColumn 组件以及代码示例

文章标题:magento2中的TimelineColumn 组件以及代码示例
  • 文章分类: Magento
  • 10777 阅读
系统学习magento二次开发,推荐小册:《Magento中文全栈二次开发 》

本小册面向Magento2以上版本,书代码及示例兼容magento2.0-2.4版本。涵盖了magento前端开发,后端开发,magento2主题,magento2重写,magento2 layout,magento2控制器,magento2 block等相关内容,带领您成为magento开发技术专家。


Magento 2中的TimelineColumn组件是用于在后台管理区域中显示时间线的组件。它通常用于订单、客户、产品等列表页面中,以显示项目的创建日期和时间。

下面是一个简单的Magento 2 TimelineColumn组件示例:

首先,创建一个新的Magento 2模块(如果你还没有创建)。

在你的模块目录中创建一个新的PHP类,例如:My_Module\Block\Adminhtml\Order\TimelineColumn

在这个PHP类中,添加以下代码:

<?php
namespace My\Module\Block\Adminhtml\Order;
use Magento\Backend\Block\Widget\Grid\Column;
class TimelineColumn extends Column
{
    /**
     * Get the creation time of the order item
     *
     * @param  \Magento\Sales\Model\Order\Item $item
     * @return string
     */
    public function getCreationTime($item)
    {
        return $item->getCreatedAt();
    }
    /**
     * Render the column value
     *
     * @param  \Magento\Framework\DataObject $row
     * @return string
     */
    public function _getValue(\Magento\Framework\DataObject $row)
    {
        $value = parent::_getValue($row);
        if ($this->getIndex() == 'creation_time') {
            $value = $this->getCreationTime($row);
        }
        return $value;
    }
}

这个PHP类继承了Magento 2中的Magento\Backend\Block\Widget\Grid\Column类,并覆盖了其中的_getValue()方法。在这个方法中,我们检查列的索引是否为creation_time,如果是,我们使用getCreationTime()方法来获取订单项的创建时间。

在你的模块目录中创建一个新的布局XML文件,例如:my_module_order_listing.xml,并将以下代码添加到该文件中:

<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
    <body>
        <referenceContainer name="content">
            <block class="Magento\Sales\Block\Adminhtml\Order\Grid" name="adminhtml.sales.order.grid">
                <arguments>
                    <argument name="id" xsi:type="string">sales_order_grid</argument>
                    <argument name="dataSource" xsi:type="object">Magento\Sales\Model\ResourceModel\Order\Grid\Collection</argument>
                    <argument name="default_sort" xsi:type="string">created_at</argument>
                    <argument name="default_dir" xsi:type="string">desc</argument>
                    <argument name="save_parameters_in_session" xsi:type="string">1</argument>
                </arguments>
                <block class="My\Module\Block\Adminhtml\Order\TimelineColumn" name="adminhtml.sales.order.grid.column.creation_time" as="creation_time">
                    <arguments>
                        <argument name="header" xsi:type="string" translate="true">Creation Time</argument>
                        <argument name="index" xsi:type="string">creation_time</argument>
                        <argument name="sortable" xsi:type="string">true</argument>
                    </arguments>
                </block>
            </block>
        </referenceContainer>
    </body>
</page>

这个布局文件将我们刚刚创建的TimelineColumn块添加到订单列表页面的`adminhtml.sales.order


推荐文章