zikula/sortable-columns

该包已废弃且不再维护。未建议替代包。

SortableColumns 是一个 zikula 组件,用于帮助管理可点击排序数据的数据表列标题。

1.0.0 2020-01-21 22:10 UTC

This package is auto-updated.

Last update: 2022-09-18 10:02:31 UTC


README

SortableColumns 已包含在 核心仓库 中。

SortableColumns

SortableColumns 是一个 Zikula 组件,用于帮助管理可点击排序数据的数据表列标题。集合是一个 Doctrine\Common\Collections\ArrayCollectionZikula\Component\SortableColumns\Column 对象集合。使用 SortableColumns::generateSortableColumns 创建一个按列名索引的属性数组(url,css类),可用于生成表标题/链接。

控制器

use Zikula\Component\SortableColumns\SortableColumns;

// in controller method
$orderBy = $request->query->get('orderby', 'pageid');
$currentSortDirection = $request->query->get('sdir', Column::DIRECTION_DESCENDING);

$sortableColumns = new SortableColumns($this->get('router'), 'zikulapagesmodule_admin_index', 'orderby', 'sdir');
$sortableColumns->addColumn(new Column('pageid')); // first added is automatically the default
$sortableColumns->addColumn(new Column('title'));
$sortableColumns->addColumn(new Column('cr_date'));
$sortableColumns->setOrderBy($sortableColumns->getColumn($orderBy), $currentSortDirection);
$sortableColumns->setAdditionalUrlParameters(array(
    'language' => isset($filterData['language']) ? $filterData['language'] : null,
));

$templateParameters['sort'] = $sortableColumns->generateSortableColumns();

Twig 模板

<tr>
    <th><a class='{{ sort.pageid.class }}' href='{{ sort.pageid.url }}'>{% trans %}ID{% endtrans %}</a></th>
    <th><a class='{{ sort.title.class }}' href='{{ sort.title.url }}'>{% trans %}Title{% endtrans %}</a></th>
    <th><a class='{{ sort.cr_date.class }}' href='{{ sort.cr_date.url }}'>{% trans %}Created{% endtrans %}</a></th>
</tr>

有额外的快捷方法可用

  • $sortableColumns->addColumns()
  • $sortableColumns->setOrderByFromRequest()
$sortableColumns->addColumns([new Column('pageid'), new Column('title'), new Column('cr_date')]);
$sortableColumns->setOrderByFromRequest($request);

如果需要,您可以使用以下方法获取 orderByFields 的值(例如,用于 DB 查询):

$sortableColumns->getSortColumn()->getName()
$sortableColumns->getSortDirection()