PHP MVC (ручной) с датируемыми - PullRequest
0 голосов
/ 21 декабря 2018

Я новичок в mvc и не использую PHP-фреймворк, потому что мне нужно создать свой проект, используя мой OWN mvc.

Проблема сейчас в том, что я застрял, как передавать записи базы данных в Datatable.

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

URL:

http://localhost/project/public/user/showAll

Просмотр:

<table id="datatable_users" class="display nowrap row-border hover order-column" cellspacing="0" width="100%" style="font-size: 13px; margin-top: 20px; display: block">
<thead>
    <tr>
        <th width="30%" class="text-left">StaffNo</th>
        <th width="30%" class="text-left">StaffName</th>
        <th width="30%" class="text-center">EmailAddress</th>
     </tr>
</thead>
<tfoot>
    <tr>
        <th width="30%" class="text-left">StaffNo</th>
        <th width="30%" class="text-left">StaffName</th>
        <th width="30%" class="text-center">EmailAddress</th>
    </tr>
 </tfoot>

Контроллер:

<code>public function showAll() {
    //to model
    $data['data'] = $this->model('User')->getAllUsers(); //from model's method

    //troubleshoot
    //echo '<pre>';
    //print_r($data);
    //echo '
';//умереть();// Да, это возвращаемые данные $ this-> view ('user / showAll', $ data);}

Модель:

public function getAllUsers() {
    $output = array();

    $query = $this->pdo->prepare('select * from tims_user_dtl');
    $query->execute();
    $result = $query->fetchAll(PDO::FETCH_ASSOC);
    if ($result) {
        foreach ($result as $column) {
            $output[] = array('StaffNo' => $column['staff_no'], 'StaffName' => $column['staff_name'], 'EmailAddress' => $column['email_address']);
        }
    }

    $results = array(
        "sEcho" => 1,
        "iTotalRecords" => count($output),
        "iTotalDisplayRecords" => count($output),
        "aaData" => $output
    );

    return json_encode($results); //pass to datatable
}

Настройка данных:

<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.10.19/css/jquery.dataTables.css">
<script type="text/javascript" charset="utf8" src="https://cdn.datatables.net/1.10.19/js/jquery.dataTables.js"></script>

<script>
    $(document).ready(function () {
        var table = $('#datatable_users').DataTable({
            "bFilter": true,
            "sPaginationType": "full_numbers",
            "bLengthChange": true, //show dropdown box
            "bAutoWidth": true, //Enable or disable automatic column width calculation
            "autoWidth": true,
            "aLengthMenu": [[10, 20, 30, 50, 100, -1], [10, 20, 30, 50, 100, "All"]],
            "iDisplayLength": 10, //jQuery Datatables pagination setting
            "scrollX": true,
            "bProcessing": true,
            processing: true,
            serverSide: true,
            "searching": true, //searching part
            ajax: {
                "url": "http://localhost/ims/public/user/showAll",
                "type": "GET",
                "datatype": "json"
            },
            "columns": [
                {data: 'StaffNo'}
                , {data: 'StaffName'}
                , {data: 'EmailAddress'}
            ],
            "columnDefs": [
                {
                    'targets': 0, //index
                    'className': 'dt-body-left',
                    'searchable': true,
                    'data': 'StaffNo'
                }
                , {
                    'targets': 1, //index
                    'className': 'dt-body-left',
                    'searchable': true,
                    'data': 'StaffName'
                }
                , {
                    'targets': 2, //index
                    'className': 'dt-body-left',
                    'searchable': true,
                    'data': 'EmailAddress'
                }

            ],
            "order": [[1, 'asc']]
        });
    });
</script>

Пожалуйста, помогите мне, спасибо

1 Ответ

0 голосов
/ 21 декабря 2018

Параметр Datatable ajax ожидает JSON, но переданный вами URL возвращает html (я думаю, это то, что делает '$ this-> view ()').Сохраните это действие контроллера, чтобы сгенерировать и визуализировать ваше представление и добавить новый маршрут, по которому вы будете получать данные, кодировать их в JSON и возвращать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...