多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# 列表排序操作 ### 介绍 **重新排序行为**是控制器修饰符,它提供了对数据库记录进行排序和重新排序的功能。该行为提供了一个使用controller动作的页面,称为Reorder`reorder`。此页面显示带有拖动手柄的记录列表,允许对它们进行排序并在某些情况下进行重组。 该行为取决于必须实现以下[模型特征](https://octobercms.com/docs/database/traits)之一的[模型类](https://octobercms.com/docs/database/model):[](https://octobercms.com/docs/database/traits) 1. `October\Rain\Database\Traits\Sortable` 2. `October\Rain\Database\Traits\NestedTree` 为了使用重新排序行为,应将其添加到`$implement`控制器类的属性中。另外,`$reorderConfig`应该定义class属性,并且其值应引用用于配置行为选项的YAML文件。 ~~~ namespace Acme\Shop\Controllers; class Categories extends Controller { public $implement = [ 'Backend.Behaviors.ReorderController', ]; public $reorderConfig = 'config_reorder.yaml'; // [...] } ~~~ ### [](https://octobercms.com/docs/backend/reorder#configuring-reorder)配置行为 `$reorderConfig`属性中引用的配置文件以YAML格式定义。该文件应放置在控制器的[views目录中](https://octobercms.com/docs/backend/controllers-ajax/#introduction)。以下是配置文件的示例: ~~~ # =================================== # Reorder Behavior Config # =================================== # Reorder Title title: Reorder Categories # Attribute name nameFrom: title # Model Class name modelClass: Acme\Shop\Models\Category # Toolbar widget configuration toolbar: # Partial for toolbar buttons buttons: reorder_toolbar ~~~ 可以使用下面列出的配置选项。 | 选项 | 描述 | | --- | --- | | **title** | 用于页面标题。 | | **nameFrom** | 指定应将哪个属性用作每个记录的标签。 | | **modelClass** | 一个模型类名,记录数据就是从这个模型加载的。 | | **toolbar** | 引用工具栏窗口小部件配置文件或具有配置的数组。 | ### [](https://octobercms.com/docs/backend/reorder#reorder-display)显示重新订购页面 您应该提供一个名为**reorder.htm**的[视图文件](https://octobercms.com/docs/backend/controllers-ajax/#introduction)。该视图代表“重新排序”页面,该页面允许用户对记录进行重新排序。由于重新排序包括工具栏,因此视图文件将仅包含单个方法调用。`reorderRender` ~~~ <?= $this->reorderRender() ?> ~~~ ### [](https://octobercms.com/docs/backend/reorder#override-sortable-partials)覆盖可排序部分 如果您需要覆盖重新订购页面的默认视图,则必须复制 1. `modules/backend/behaviors/reordercontroller/partials/_container.htm` 2. `modules/backend/behaviors/reordercontroller/partials/_records.htm` 在 1. `plugins/yournamespace/yourplugin/yoursortablecontroller/_reorder_container.htm` 2. `plugins/yournamespace/yourplugin/yoursortablecontroller/_reorder_records.htm` ### [](https://octobercms.com/docs/backend/reorder#extend-model-query)扩展模型查询 可以通过覆盖控制器类内部的方法来扩展对列表[数据库模型](https://octobercms.com/docs/database/model)的查找查询`reorderExtendQuery`。通过将**withTrashed**范围应用于查询,此示例将确保软删除的记录包括在列表数据中: ~~~ public function reorderExtendQuery($query) { $query->withTrashed(); } ~~~