Silverstripe Version: 4.5
Question: How can I use GridFieldSortableRows and make the SortOrder Field translatable with fluent?
class HeaderSliderModul extends Modul{
private static $has_many = [
"Items" => "HeaderSliderItem"
];
private static $translate = [
"Items"
];
public function getCMSFields(){
$fields = parent::getCMSFields();
$gf = GridField::create( 'Items', 'Items', $this->Items()->sort(["SortOrder" => "ASC"]), GridFieldConfig_RecordEditor::create() );
$config = $gf->getConfig();
$config->addComponent( new GridFieldSortableRows('SortOrder') );
$fields->addFieldToTab( 'Root.Items', $gf );
return $fields;
}
}
class HeaderSliderItem extends DataObject{
private static $db = [
"Title" => "Varchar",
"Headline" => "Varchar",
"SortOrder" => "Int"
];
private static $has_one = [
"Image" => Image::class,
"Modul" => "HeaderSliderModul"
];
private static $owns = [
"Image"
];
private static $translate = [
"SortOrder",
"Title",
"Headline",
"ImageID"
];
...
It seems $this->Items()->sort([“SortOrder” => “ASC”]) is taking the right (localised) SortOrder, but GridFieldSortableRows only editing the base table.
Any Ideas?
I could do something like this:
if(FluentState::singleton()->getLocale() == "en_US"){
$gf = GridField::create( 'Items', 'Items', $this->getSortetItems(), GridFieldConfig_RecordEditor::create() );
$config = $gf->getConfig();
$config->addComponent( new GridFieldSortableRows('SortOrder') );
}
elseif (FluentState::singleton()->getLocale() == "de_DE") {
$gf = GridField::create( 'Items', 'Items', $this->getSortetItems(), GridFieldConfig_RecordEditor::create() );
$config = $gf->getConfig();
$config->addComponent( new GridFieldSortableRows('SortOrderDe') );
}
but that ugly af.