heimrichhannot/contao-list-widget-bundle

此插件提供了一种输入类型,用于通过回调函数定义的实体列表显示。

1.3.0-alpha2 2024-03-04 15:49 UTC

This package is auto-updated.

Last update: 2024-09-04 17:00:03 UTC


README

此插件提供功能,用于在Contao后端(无论是作为dca字段还是后端模块)显示列表。

可视化使用javascript库 DataTables

alt text

功能

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

技术说明

作为dca字段的插件使用

为您的字段使用inputType "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和快捷函数的相同结构)

回调