后端排序和重新排序
介绍
重新排序行为是一个控制器修饰符,它提供了对数据库记录进行排序和重新排序的功能。 该行为使用控制器操作reorder提供名为Reorder的页面。 此页面显示带有拖动句柄的记录列表,允许对它们进行排序,并在某些情况下进行重组。
行为取决于model class ,它必须实现以下model traits之一:
October\Rain\Database\Traits\SortableOctober\Rain\Database\Traits\NestedTree
为了使用重新排序行为,您应该将它添加到控制器类的$implement属性中。 此外,应定义$reorderConfig类属性,其值应引用用于配置行为选项的YAML文件。
namespace Acme\Shop\Controllers;class Categories extends Controller{public $implement = ['Backend.Behaviors.ReorderController',];public $reorderConfig = 'config_reorder.yaml';// [...]}
配置重新排序行为
$reorderConfig属性中引用的配置文件以YAML格式定义。 该文件应放入控制器的views目录。 以下是配置文件的示例:
# ===================================# Reorder Behavior Config# ===================================# Reorder Titletitle: Reorder Categories# Attribute namenameFrom: title# Model Class namemodelClass: Acme\Shop\Models\Category# Toolbar widget configurationtoolbar:# Partial for toolbar buttonsbuttons: reorder_toolbar
可以使用下面列出的配置选项。
| 选项 | 描述 |
|---|---|
| title | 用于页面标题。 |
| nameFrom | 指定应将哪个属性用作每个记录的标签。 |
| modelClass | 模型类名称,记录数据从此模型加载。 |
| toolbar | 引用Toolbar Widget配置文件或带配置的数组。 |
显示重新排序页面
您应该提供名为reorder.htm的视图文件 。 此视图表示允许用户重新排序记录的“重新排序”页面。 由于重新排序包括工具栏,因此视图文件将仅包含单个reorderRender方法调用。
<?= $this->reorderRender() ?>
扩展模型查询
可以通过覆盖控制器类中的reorderExtendQuery方法来扩展列表数据库模型 的查询查询。 此示例将通过将withTrashed作用域应用于查询来确保列表数据中包含软删除的记录:
public function reorderExtendQuery($query){$query->withTrashed();}
