я читал AliDatatableBundle но не нашел ничего полезного, так что вот моя проблема. Это код в моем _datatable
функция:
private function _datatable()
{
return $this->get('datatable')
->setEntity("ComunBundle:SolicitudUsuario", "su")
->setFields(
array(
"Tipo de Tramite" => 'tt.nombre',
"No. Solicitud" => 'su.id',
"Tipo de Solicitud" => 'tr.nombre',
"Estado" => 'es.nombre',
"Fecha" => 'su.fecha_creacion',
"_identifier_" => 'su.id')
)
->setWhere('su.usuario = :usuario', array('usuario' => $this->get('security.context')->getToken()->getUser()->getId()))
->addJoin('su.tipo_tramite', 'tt', \Doctrine\ORM\Query\Expr\Join::INNER_JOIN)
->addJoin('su.tipo_registro', 'tr', \Doctrine\ORM\Query\Expr\Join::INNER_JOIN)
->addJoin('su.estado_solicitud', 'es', \Doctrine\ORM\Query\Expr\Join::INNER_JOIN)
->setOrder("su.fecha_creacion", "DESC")
->setHasAction(true);
}
Как вы можете заметить, есть fecha_creacion
поле, которое возвращает к виду это [object Object]
Я подозреваю, что это DateTime, поэтому мне нужно отформатировать его перед отправкой в рендер / представление, но я не знаю, как, какой-либо совет? Я не знаю, если Пользовательский рендеринг как объяснили Вот это решение, но если это я до сих пор понятия не имею об этом. Любая помощь?
Проблема, с которой вы сталкиваетесь в AliDatatableBundle, может быть решена с помощью https://github.com/AliHichem/AliDatatableBundle#-doctrine-query-builder где вы можете написать свой пользовательский запрос symfony2, используя Doctrine.
И рендеринг объекта даты в расположении файла под веткой (ali / datatable / Ali / DatatableBundle / Resources / views / Main / index.html.twig) с использованием aoColumnDefs Вы можете увидеть мой пример ниже, чтобы отобразить объект даты в первом столбце таблицы данных.
var $defaults = {
"bJQueryUI": true,
"sPaginationType": "full_numbers",
"aLengthMenu": [[5,10, 25, 50, -1], [5,10, 25, 50, "All"]],
"iDisplayLength": 10,
"bServerSide": true,
"bProcessing": true,
"sAjaxSource": null,
"bPaginate": true,
"bLengthChange": false,
//"aoColumnDefs": $aoColumnDefs, // you can comment this default one and write your own aoColumnDefs
"aoColumnDefs": [
{"aTargets": [0],"fnRender": function(dateobject){ return dateobject.aData[0].date }},
{"aTargets": [1],"fnRender": function(profile){
//making decision based on different row data
if(profile.aData[1] == 1)
return 'Admin';
else if(profile.aData[1] == 2)
return 'Consumer';
else
return 'Vendor';
}
},
{"aTargets": [2],"fnRender": function(name){
var $edit_url = strtr(
"{{ path(edit_route , { 'id': "xx" }) }}",
{ "xx": name.aData[{{fields|length}}-1] }
);
return "<a style='float:right; margin-right:10px' class='dialog' title='edit'href='"+$edit_url+"'>"+name.aData[2]+"</a>";
}
}
],
"fnDrawCallback": function(oSettings) {
var s = getWrapper();
if( multiple && $('.dataTables_multiple',$(s)).length==0){
$(s+' .dataTables_length').prepend(multiple_rawhtml);
}
},
"bSort": true,
"bFilter": {% if search %} true {% else %} false {% endif %},
"oLanguage": {
"sProcessing": '{{ 'Processing' | trans() }}',
"sLengthMenu": '{{ 'LengthMenu' | trans() }}',
"sZeroRecords": '{{ 'ZeroRecords' | trans() }}',
// "sInfo": '{{ 'Info' | trans() }}',
// "sInfoEmpty": '{{ 'InfoEmpty' | trans() }}',
"sInfoFiltered": '{{ 'InfoFiltered' | trans() }}',
// "sInfoPostFix": '{{ 'InfoPostFix' | trans() }}',
"sSearch": '{{ 'Search' | trans() }}',
"sLoadingRecords": '{{ 'LoadingRecords' | trans() }}',
"sUrl": "",
"oPaginate": {
"sFirst": '{{ 'First' | trans() }}',
"sPrevious": '{{ 'Previous' | trans() }}',
"sNext": '{{ 'Next' | trans() }}',
"sLast": '{{ 'Last' | trans() }}'
}
},
"bAutoWidth" : false
};
Вы также можете установить разные файлы веток в местоположении (ali / datatable / Ali / DatatableBundle / Resources / views / Main), чтобы иметь разные файлы веток.
В вашем собственном файле ветки укажите аргумент main_template
{{ Таблица данных({
‘edit_route’: ‘RouteForYourEntity_edit’,
‘delete_route’: ‘RouteForYourEntity_delete’,
‘main_template’: ‘AliDatatableBundle: Main: myfile.html.twig’,
‘js’: {
‘sAjaxSource’: путь (‘RouteForYour_grid_action’)
}
})
}}
Других решений пока нет …