Silverstripe asset-admin中如何重写TableView模板以显示并排序文件名?
重写Silverstripe AssetAdmin的TableView模板并添加文件名排序
步骤1:创建自定义TableView类
继承官方的TableView类,扩展列定义和排序逻辑。在app/src/Admin/CustomAssetTableView.php中写入:<?php namespace App\Admin; use SilverStripe\AssetAdmin\Forms\TableView; use SilverStripe\ORM\DataList; class CustomAssetTableView extends TableView { // 添加文件名列并开启排序 protected function getColumns() { $columns = parent::getColumns(); // 在现有列中插入文件名列 $columns['FileName'] = [ 'title' => '文件名', 'data' => 'FileName', 'sortable' => true, ]; return $columns; } // 处理文件名字段的排序逻辑 protected function sortList(DataList $list) { $sortedList = parent::sortList($list); if ($this->getState()->Sort === 'FileName') { $direction = $this->getState()->SortDir ?: 'ASC'; return $list->sort('FileName', $direction); } return $sortedList; } }步骤2:配置注入器替换原组件
在app/_config/app.yml中添加注入器配置,让系统使用自定义类:SilverStripe\Core\Injector\Injector: SilverStripe\AssetAdmin\Forms\TableView: class: App\Admin\CustomAssetTableView步骤3:自定义模板(按需调整UI)
如果需要修改表格的渲染样式,复制官方模板vendor/silverstripe/asset-admin/templates/SilverStripe/AssetAdmin/Forms/TableView.ss到app/templates/App/Admin/CustomAssetTableView.ss,然后根据需求调整HTML结构或样式。步骤4:刷新缓存验证效果
执行命令刷新系统缓存:vendor/bin/sake dev/build flush=all进入AssetAdmin后,就能看到新增的文件名列,点击表头即可触发排序。
内容的提问来源于stack exchange,提问作者Jaydn de Graaf
相关产品推荐
相关产品推荐

