Неправильная сортировка Silverstripe 3 со специальными символами (умлауты)

Silverstripe 3.6 При попытке отсортировать ArrayList по полю, начинающемуся со специальных символов (в моем случае это umlauts по-немецки), результат не является "естественной сортировкой"

Пример:

$arrayList  = ArrayList::create(array(
  ArrayData::create(array('Title' => 'Ccc')),
  ArrayData::create(array('Title' => 'Zzz')),
  ArrayData::create(array('Title' => 'Ööö')),
  ArrayData::create(array('Title' => 'Aaa')),
  ArrayData::create(array('Title' => 'Rrr')),
  ArrayData::create(array('Title' => 'Ooo')),
  ArrayData::create(array('Title' => 'Äää'))
));

Debug::dump($arrayList->column('Title'));
$sortedList = $arrayList->sort('Title');
Debug::dump($sortedList->column('Title'));

Результат оригинального списка:

[0] => Ccc
[1] => Zzz
[2] => Ööö
[3] => Aaa
[4] => Rrr
[5] => Ooo
[6] => Äää

Результат отсортированного списка:

[0] => Aaa
[1] => Ccc
[2] => Ooo
[3] => Rrr
[4] => Zzz
[5] => Äää
[6] => Ööö

Ожидание будет:

[0] => Aaa
[1] => Äää
[2] => Ccc
[3] => Ooo
[4] => Ööö
[5] => Rrr
[6] => Zzz

Использование php5.6 с расширением intl. Есть идеи, как заставить это работать?

0 ответов

Другие вопросы по тегам