Код
Код административного класса My Sonata:
class UsersAdmin extends AbstractAdmin
{
.....
protected function configureListFields(ListMapper $listMapper)
{
$listMapper
->add('getSummaryTimeInGame','string',[
'label' => 'Summary time in game',
'template' =>'AdminBundle::get_summary_time_in_game.html.twig'
])
->add('getPercentTasksDone', 'string', [
'label' => 'Percents tasks done',
'template' => 'AdminBundle::get_percent_tasks_done.html.twig'
])
}
public function getExportFields()
{
return [
'Name' => 'name',
'Surname' => 'surname',
'Summary time in game' => 'getSummaryTimeInGame',
'Percents tasks done' => 'getPercentTasksDone',
];
}
.....
}
Проблема
Поля getSummaryTimeInGame и getPercentTasksDone видны в представлении списка данных, но при экспорте в XLS они пустые.
Как правильно перечислить эти поля при экспорте XLS?
@AirBair Эти методы не существуют в связанном объекте. Пользовательская логика для значений этих полей находится в шаблонах twig (задается как параметр 'template' в $ listMapper)
Вот почему это не работает! Действие экспорта не зависит от конфигурации списка. Значения в полях экспорта должны соответствовать имени атрибута или метода в связанной сущности. Согласно документу: sonata-project.org/bundles/admin/3-x/doc/reference/…
@AirBar Итак, как включить пользовательское логическое значение в экспортируемые поля? Я хотел бы использовать свой сервис в шаблоне веточки, чтобы получить выгоду. Внедрение сервиса в Entity - не лучшая практика.




В своей пользовательской сущности (сущности, связанной с этим классом администратора) создайте эти две функции.
public function getSummaryTimeInGame{
// return the desired calculated value.
}
public function getPercentTasksDone(){
// return the desired calculated value.
}
После этого экспортируйте свой лист и получите эти значения в свой файл.
Как getSummaryTimeInGame, так и getPercentTasksDone являются существующими методами в вашей связанной сущности?