在传递到AliDatatableBundle中的_datable函数之前格式化DateTime结果


Format DateTime result before pass to the _datatable function in AliDatatableBundle

我正在阅读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#-条令查询生成器,您可以在其中使用条令编写symfony2自定义查询。

通过使用aoColumnDefs,在Twitch文件下的位置(ali/datatable/Ari/DatatableBundle/Resources/views/Main/index.html.titch)渲染日期对象,您可以看到下面的示例,以便在数据表的第一列中渲染日期对象。

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/Ari/DatatableBundle/Resources/views/Main)内设置不同的分支文件,使其具有不同的分支。在您的ownbundle分支文件中提供参数main_template

{数据表({'edit_route':'RouteForYourEntity_edit','delete_route':'RouteForYourEntity_delete','main_template':'AliDatatableBundle:Mayfile.html.trick','js':{"sAjaxSource":路径("RouteForYour_grid_action")}})}}