heimrichhannot/contao-list_widget

此简单模块提供了一个输入类型,用于通过回调函数定义的实体列表显示。

2.2.0 2021-08-31 13:41 UTC

This package is auto-updated.

Last update: 2024-08-29 04:19:57 UTC


README

对于contao 4,请使用 List Widget Bundle

此简单模块提供了在Contao后端显示列表的功能(无论是作为dca字段还是在后端模块中)。

用于可视化的javascript库为 DataTables

alt text

功能

  • inputType "listWidget" 用于作为dca字段使用
  • 方便的函数用于在您的后端模块中集成列表
  • 列表可以显示模型数据或任意数组
  • 支持datatablesjavascript库
    • 过滤表格
    • 搜索表格
    • 排序表格
  • 支持使用datatables的ajax重新加载数据 -> 目前仅适用于使用SQL命令如LIMIT的contao模型

技术说明

作为dca字段中的小部件使用

为您的字段使用输入类型 "listWidget"。

'someField' => [
    'label'     => &$GLOBALS['TL_LANG']['tl_my_dca']['someField'],
    'exclude'   => true,
    'inputType' => 'listWidget',
    'eval'      => [
        'listWidget' => [
            'ajax'                   => true,
            'ajaxConfig'             => [
                'load_items_callback' => ['SomeClass', 'loadItems']
            ],
            'header_fields_callback' => function ()
            {
                $arrHeaderFields = [];

                foreach (['academicTitle', 'additionalTitle', 'gender', 'lastname', 'email'] as $strField)
                {
                    $arrHeaderFields[$strField] = \HeimrichHannot\Haste\Dca\General::getLocalizedFieldname($strField, 'tl_dca');
                }

                return $arrHeaderFields;
            },
            'table'                  => 'tl_dca'
        ]
    ]
]

在模块中使用

例如,在您的BackendModule的generate()方法中添加以下代码

static::$arrListConfig = [
    'identifier' => 'module_' . $this->id,
    'table' => 'tl_dca',
    'ajax' => true,
    'ajaxConfig' => [
        'load_items_callback' => function($arrConfig, $arrOptions = [], $objContext = null, $objDc = null) {
            return $this->loadItems($arrConfig, $arrOptions, $objContext, $objDc);
        },
        'prepare_items_callback' => function($objItems) {
            return $this->parseNewsletters($objItems);
        },
    ],
    'columns' => static::getColumns(),
    'language' => static::getLanguage()
];

static::$arrListConfig = ListWidget::prepareConfig(static::$arrListConfig, $this);

ListWidget::initAjaxLoading(static::$arrListConfig);

在您的模块的compile方法中调用此操作

ListWidget::addToTemplate($this->Template, static::$arrListOptions);

将list_widget.html5的内容复制到您的模块模板中。

示例 load_items_callback

在这里,您可以看到如何覆盖loadItems()的核心行为

public static function loadItemsNew($arrConfig, $arrOptions = [], $objContext = null, $objDc = null)
{
    // set an initial filter using the contao options array
    $arrOptions = [
        'table'   => $arrConfig['table'],
        'columns' => $arrConfig['columns'],
        // filtering
        'column'  => 'pid',
        'value'   => $objDc->id
    ];

    // the rest of the function should also be called
    return ListWidget::loadItems($arrConfig, $arrOptions, $objContext, $objDc);
}

配置(与DCA -> eval -> listWidget和快捷函数相同的结构)

回调函数