系统学习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