thelia/easy-order-manager-module

Thelia 的 EasyOrderManager 模块

安装: 614

依赖项: 0

建议者: 0

安全: 0

星标: 0

关注者: 8

分支: 5

开放问题: 0

语言:HTML

类型:thelia-module

2.1.2 2024-06-07 14:15 UTC

This package is auto-updated.

Last update: 2024-09-07 14:57:32 UTC


README

在此处添加简短描述。如有需要,还可以添加截图。

安装

手动

  • 将模块复制到 <thelia_root>/local/modules/ 目录,并确保模块名称为 EasyOrderManager。
  • 在 Thelia 管理面板中激活它

Composer

将其添加到主 Thelia composer.json 文件中

composer require your-vendor/easy-order-manager-module

使用方法

激活后,您将在 Thelia 后台办公室中看到一个新菜单链接。这个新页面允许您通过筛选器和搜索栏轻松管理所有订单。此模块使用 Datables。

事件

您可以使用 2 个事件为此模块添加筛选器

BeforeFilterEvent::ORDER_MANAGER_BEFORE_FILTER
TemplateFieldEvent::ORDER_MANAGER_TEMPLATE_FIELD

在 BeforeFilterEvent 中,您可以访问订单查询和请求。

在 TemplateFieldEvent 中,您可以使用函数 addTemplateField(fieldName, templateName) 添加带有您新筛选器的模板。您只需将 js-filter-element 类添加到筛选器输入中。

您可以使用一个事件为此模块添加或删除列

TemplateColumnDefinitionEvent::ORDER_MANAGER_TEMPLATE_COLUMN_DEFINITION

在 TemplateColumnDefinitionEvent 中,您可以使用函数 addColumnDefinition(template, index) 向 dataTable 添加新列。

//Example : 

<?php
 //***
class EasyOrderManagerListener implements EventSubscriberInterface
{

    public function addFieldsToTemplate( TemplateFieldEvent $event)
    {
        $event->addTemplateField('item_to_filter','item_to_filter_template_name.html');
    }

    public function addFilterOnQuery( BeforeFilterEvent $event)
    {
        $filters =$event->getRequest()->get('filter');
        $search = $event->getQuery();
        if ("" !== $filters['item_to_filter']) {
            //update $search to filter with the data in $filters['item_to_filter']
        }
    }

    public function updateColumnDefinition( TemplateColumnDefinitionEvent $event)
    {
       $event->removeColumnDefinition('invoice_date');
       $event->addColumnDefinition([
               'name' => 'id_column',
               'targets' => 6, //index of column
               'title' => 'title_column',
               'orderable' => false, // /!\ orderable is not manageable for the moment always set false
               'className' => "text-center",// class applied to the column
               'render' => "defaultRender", // name of the js function when render data
               'parseOrderData'=>  function(Order $order){
                    //return the data wich will be used in the render function
               }
       ],6);
       // /!\ targets and the index param must be the same.
    }
    public static function getSubscribedEvents()
    {
        return [
            BeforeFilterEvent::ORDER_MANAGER_BEFORE_FILTER => ['addFilterOnQuery'],
            TemplateFieldEvent::ORDER_MANAGER_TEMPLATE_FIELD => ['addFieldsToTemplate'],
            TemplateColumnDefinitionEvent::ORDER_MANAGER_TEMPLATE_COLUMN_DEFINITION => ['updateColumnDefinition'],
        ];
    }
//...
}

您可以使用此函数在 JS 中渲染数据