heimrichhannot / contao-list-widget-bundle
此插件提供了一种输入类型,用于通过回调函数定义的实体列表显示。
1.3.0-alpha2
2024-03-04 15:49 UTC
Requires
- php: ^8.2
- ext-json: *
- contao/core-bundle: ^4.13 || ^5.0
- heimrichhannot/contao-ajax-bundle: ^1.0
- heimrichhannot/contao-utils-bundle: ^2.225 || ^3.0
- heimrichhannot/datatables: ^1.10
- heimrichhannot/datatables-additional: ^1.0
- symfony/http-kernel: ^3.4 || ^4.0 || ^5.0 || ^6.0
Replaces
This package is auto-updated.
Last update: 2024-09-04 17:00:03 UTC
README
此插件提供功能,用于在Contao后端(无论是作为dca字段还是后端模块)显示列表。
可视化使用javascript库 DataTables。
功能
- 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);
}