数据表服务器端 - 隐藏字段

时间:2017-03-20 14:41:06

标签: php datatables hidden-field

我正在Laravel 5.4中编写一些内容,并且我希望在服务器端实现一个用户表,因为该表太大而无法加载到内存中。

我希望在服务器端进程中隐藏记录的ID。目前服务器脚本是:

$table = 'users';
$primaryKey = 'id';
$columns = array(
    array('db' => 'id', 'dt' =>0),
    array( 'db' => 'name', 'dt' => 1 ),
    array( 'db' => 'email',  'dt' => 2 ),
    array( 'db' => 'directline',   'dt' => 3 ),
    array( 'db' => 'active', 'dt' => 4)
);
// SQL server connection information
$sql_details = array(
    'user' => 'XXXX',
    'pass' => 'XXXX',
    'db'   => 'XXXX',
    'host' => 'localhost'
);   
require( 'ssp.class.php' ); 
echo json_encode(
    SSP::simple( $_GET, $sql_details, $table, $primaryKey, $columns )
);

我的观点目前显示:

<table id="thetable" class="table" align="center">
                                        <thead>
                                            <tr>
                                                <th>id</th>
                                                <th>Name</th>
                                                <th>Email</th>
                                                <th>direct line</th>
                                                <th>active</th>
                                            </tr>
                                        </thead>

                                    </table>

文件数据表的脚本是

$(document).ready(function() {
        $('#thetable').DataTable( {
            dom: 'lBfrtip',
                "iDisplayLength": 20,
                "lengthMenu": [ 10, 20,30, 50, 75, 100,200 ],
                buttons: [
                    'copy',  'print',
                    {extend: 'excel',
                        filename: 'users', footer:true},
                    {extend: 'pdf',
                        filename:  'users'},
                    {extend:'csvHtml5',
                        filename: 'users'},
                    {extend: 'collection',
                        text: 'columns',
                        buttons:['columnsVisibility'] }
                ],
                columnDefs: [
                    {'orderable':false, "targets":2    },
                    {"targets": [4], 
                        "render": function ( data, type, full, meta ) {

                            if(data == 1) 
                                {return '<span style="color: green"><i class="fa fa-check"> </i></span>'; }
                            else
                                {return '<span style="color: red"><i class="fa fa-times"> </i></span>'; }
                            }


                    },
                    ],
            "processing": true,
            "serverSide": true,
            "ajax": "{{ asset('/ajax/server_users.php') }}"
        } );
    } );

基本上我想隐藏ID列。

2 个答案:

答案 0 :(得分:0)

使用columns.visible选项启用或禁用指定列的显示。

例如:

'columnDefs': [
   { 'targets': 0, 'visible': false },
   // ... skipped ...
]

答案 1 :(得分:0)

我在datatables网站上挖掘了一下,我发现这是从服务器端脚本添加到返回的项目中的:

array(
        'db' => 'id',
        'dt' => 'DT_RowId',
        'formatter' => function( $d, $row ) {
            // Technically a DOM id cannot start with an integer, so we prefix
            // a string. This can also be useful if you have multiple tables
            // to ensure that the id is unique with a different prefix
            return 'row_'.$d;
        }
    ),

这会自动将字段ID添加为可以使用的DT_RowId,因此可以从表本身中删除它,但是为链接引用等等。