Добавление элементов управления звуком и кнопки в обработку на стороне сервера Datatables

Я использую Datatables с Codeigniter - PHP.

Теперь в таблице у меня очень большие данные, поэтому я использовал обработку на стороне сервера Datatables для отображения своих данных.

В моем столе есть аудиофайл, который можно воспроизвести, и кнопка для загрузки файла.

Ранее, когда я не использовал обработку на стороне сервера, я использовал ее для отображения следующим образом:

<table id = "dtMaterialDesignExample" class = "table table-striped table-bordered example hoverable"  style = "width:100%">
    <thead>
        <tr>
            <th><i class = "fas fa-user"></i> Caller </th>
            <th><i class = "fas fa-calendar-week"></i> Date</th>
            <th><i class = "fas fa-clock"></i> Duration</th>

            <th><i class = "fas fa-sort-numeric-down"></i> Recipient Number</th>
            <th><i class = "fas fa-play"></i> Recording</th>
            <th><i class = "fas fa-download"></i> Download</th>
        </tr>
    </thead>
    <tbody>
       <?php if (count($reports)): foreach($reports as $report): ?>   
        <tr >
            <td><?php echo $report->src; ?></td>
            <td><?php echo $report->calldate; ?></td>
            <td><?php echo $report->duration; ?> Seconds</td>

            <td><?php echo $report->dst; ?></td>
            <td> 
              <audio controls controlsList = "nodownload">
                  <source src = "<?php echo ccs_recording_path.$report->filename.'-all.mp3'; ?>" type = "audio/ogg" data-recordings = "<?php echo $report->filename.'-all.mp3'; ?>">
              </audio>
            </td>
            <td style = "text-align: center;"><a href = "<?php echo ccs_recording_path.$report->filename.'-all.mp3'; ?>"><i class = "fas fa-2x fa-file-download"></i></a> </td>

        </tr>

        <?php endforeach; ?>
          <?php else: ?>
          <tr>
              <td colspan = "10">No Records Available</td>
          </tr>
          <?php endif; ?> 
    </tbody>

</table>

Теперь, когда я добавил серверную часть, мой код:

HTML

<table id = "dtMaterialDesignExample" class = "table table-striped table-bordered example hoverable"  style = "width:100%">
<thead>
    <tr>
        <th><i class = "fas fa-user"></i> Caller </th>
        <th><i class = "fas fa-calendar-week"></i> Date</th>
        <th><i class = "fas fa-clock"></i> Duration</th>

        <th><i class = "fas fa-sort-numeric-down"></i> Recipient Number</th>
        <th><i class = "fas fa-play"></i> Recording</th>
        <th><i class = "fas fa-download"></i> Download</th>
    </tr>
</thead>

</table>

PHP

public function response()
{
    $from_date = "2019-01-01 00:00:00";
    $to_date   = "2019-01-23 00:00:00"; 

    $response = $this->Report_m->get_agent_cdr($from_date,$to_date);

    $response = ["sEcho" => 1,
        "iTotalRecords" => count($response),
        "iTotalDisplayRecords" => count($response),
        "aaData" => $response ];


    $response = json_encode($response);

    echo $response;

}

ЯВАСКРИПТ

$(document).ready(function () {
var table = $('#dtMaterialDesignExample').DataTable({
"lengthMenu": [[5,10, 25, 50, -1], [5,10, 25, 50, "All"]],
"sAjaxSource": "<?php echo site_url('CDR/response'); ?>",
"bProcessing": true,
"aoColumns": [
        { mData: 'src' } ,
        { mData: 'calldate' },
        { mData: 'duration'},
        { mData: 'dst'},
        { mData: '<audio controls controlsList = "nodownload"><source src = "<?php echo ccs_recording_path.$report->filename.'-all.mp3'; ?>" type = "audio/ogg" data-recordings = "<?php echo $report->filename.'-all.mp3'; ?>"></audio>'},
        { mData: '<a href = "<?php echo ccs_recording_path.$report->filename.'-all.mp3'; ?>"><i class = "fas fa-2x fa-file-download"></i></a>'},
      ],
  dom: '<"float-left"B><"float-right"f>rt<"row"<"col-sm-4"l><"col-sm-4"i><"col-sm-4"p>>',
  fixedHeader: true,
    buttons: [
        {
            extend: 'csvHtml5',
            title: 'bizRTC CDR <?php date('d-m-Y'); ?>',
             customize: function (csv) {
                 return "Enjoy the file"+csv;
              },
               className: 'btn btn-outline-primary waves-effect space',
        },
        {
        extend: 'pdfHtml5',
        title: 'CDR <?php echo date('d-m-Y'); ?>',
        customize: function ( doc ) {
                        doc.content.splice( 0, 0, {
                            text: "bizRTC CDR"
                        } );
        },
        className: 'btn btn-outline-primary waves-effect space',
        },
        {
            extend: 'excelHtml5',

            title: 'bizRTC CDR <?php date('d-m-Y'); ?>',
            message: "Call Records",
            className: 'btn btn-outline-primary waves-effect space',


        },
    ],

  responsive: {
        details: {
            display: $.fn.dataTable.Responsive.display.modal( {
                header: function ( row ) {
                    var data = row.data();
                    return 'Details for '+data[0]+' '+data[1];
                }
            } ),
            renderer: $.fn.dataTable.Responsive.renderer.tableAll( {
                tableClass: 'table'
            } )
        }
    },
    "drawCallback": function () {
        $('.dataTables_paginate > .pagination').addClass('pagination pagination-circle pg-blue mb-0');
    }
});

Для последних двух столбцов у меня есть аудиоплеер и кнопка «Как мне показать их в таблицах данных?»

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
511
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете использовать columnDefs в Datatable для отображения пользовательских значений столбца в datatable, как это,

var table = $('#myTable').DataTable( {
    columnDefs: [
        { 
         targets: [5],//<- target column index 
         visible: true,
         render: function ( data, type, row, meta ){
            return `<audio controls controlsList = "nodownload">
              <source src = "<?php echo ccs_recording_path.$report->filename.'-all.mp3'; ?>" type = "audio/ogg" data-recordings = "<?php echo $report->filename.'-all.mp3'; ?>">
          </audio>`
          }
        },

    ]
} );

Это всего лишь фрагмент кода для вашего понимания. Вам нужно внести некоторые изменения, чтобы настроить его в соответствии с вашим кодом. Вы можете прочитать больше об этом здесь,

https://datatables.net/reference/option/columns.render

Я пытался добавить рендер следующим образом: {mData: 'null',mRender:'<audio controls controlsList = "nodownload"><source src = "https://cc.bizrtc.com/RECORDINGS/MP3/20181025-170025_98‌​98152427_70581001_59‌​397058-all.mp3" type = "audio/ogg" data-recordings = "20181025-170025_9898152427_70581001_59397058-all.mp3"></aud‌​io>',}, но он показывает мне ошибку: Uncaught TypeError: Cannot read property '<audio Controls ControlList = "nodownload"><source src = "копия" of undefined

Rajan 06.02.2019 08:07

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