php - Silverstripe 管理列排序在 price.nice 上不起作用
问题描述
Silverstripe 3.6 管理列排序在 price.nice 上不起作用。我有以下代码
private static $summary_fields = array (
'GridThumbnail' => '',
'PricePerNight.nice' => 'Price',
'Title' => 'Title',
'Status' => 'Status',
'Proptype.Title' => 'Type',
'Pricetype.Title' => 'Type',
'Bedrooms' => 'Beds',
'NiceDate.Nice' => 'Updated',
'CreatedDate' => 'Added',
'FeaturedOnHomepage.nice' => 'Featured?'
);
当我使用 PricePerNight.nice 时,当我删除它时,它会上下移动排序列,它允许排序列有任何想法如何解决这个问题,或者它是一个错误?基本上任何具有 .nice 的列都不会排序。
解决方案
网格字段的排序由类提供GridFieldSortableHeader
。它使用查询进行排序。当您调用时,PricePerNight.nice
您指的是更改来自数据库的数据Nice()
的类上的方法。Currency
您可以通过调用setFieldSorting
on方法来解决此问题GridFieldSortableHeader
。该方法需要一个数组,其中包含您的自定义字段名和实际字段名作为要排序的值。
从代码中,我猜您正在学习 SilverStripe 课程并且您正在使用 ModelAdmin。
对于模型管理员:
public function getEditForm($id = null, $fields = null)
{
$form = parent::getEditForm($id, $fields);
if($gridField = $form->Fields()->dataFieldByName($this->sanitiseClassName($this->modelClass))) {
$config = $gridField->getConfig();
$sortableHeader = $config->getComponentByType(GridFieldSortableHeader::class);
$sortableHeader->setFieldSorting([
'PricePerNight.nice' => 'PricePerNight',
'NiceDate.Nice' => 'NiceDate',
'FeaturedOnHomepage.nice' => 'FeaturedOnHomepage'
]);
}
return $form;
}
对于数据对象(页面):
public function getCMSFields()
{
$fields = parent::getCMSFields();
if($gridField = $fields->dataFieldByName('Property')) { //relationname
$config = $gridField->getConfig();
$sortableHeader = $config->getComponentByType(GridFieldSortableHeader::class);
$sortableHeader->setFieldSorting([
'PricePerNight.nice' => 'PricePerNight',
'NiceDate.Nice' => 'NiceDate',
'FeaturedOnHomepage.nice' => 'FeaturedOnHomepage'
]);
}
return $fields;
}
推荐阅读
- google-sheets - 使用 ARRAYFORMULA 获取字符串的子集
- python - 多元数据的非规范化
- google-apps-script - 例外:您在短时间内创建或删除了太多日历或日历事件。请稍后再试
- java - Spring Boot 不会在可连接件中拉动柱子。相反,它只是在列中添加一个数字
- sql - 从一组日期生成日期范围的年份
- excel - 如何在查找表中添加连续值
- javascript - 节点中的垃圾收集
- android - MotionLayout KeyCycle 和 KeyTimeCycle
- python - Deleting elements of lists, within other lists in Python
- slf4j - 以编程方式打开或关闭到 Slf4j 的全局 RestAssured 日志记录