Cakephp 2.x ошибка разбиения на страницы при поиске - PullRequest
0 голосов
/ 11 апреля 2019

Я использую компонент pakeinator для поиска данных.Я могу получить данные, но когда я перехожу на следующую страницу или сортирую, я получаю сообщение об ошибке.

Примечание (8): неопределенная переменная: auditLog [APP \ View \ Audits \ filter_trails.ctp, строка 92] Предупреждение (2): указан неверный аргумент для foreach () [APP \ View \ Audits \ filter_trails.ctp, строка 92]

Примечание (8): неопределенный индекс: count [CORE \ Cake\ View \ Helper \ PaginatorHelper.php, строка 672] Примечание (8): неопределенный индекс: предел [CORE \ Cake \ View \ Helper \ PaginatorHelper.php, строка 675] Примечание (8): неопределенный индекс: количество [CORE \ Cake\ View \ Helper \ PaginatorHelper.php, строка 676] Примечание (8): неопределенный индекс: count [CORE \ Cake \ View \ Helper \ PaginatorHelper.php, строка 677] Примечание (8): неопределенный индекс: текущий [CORE \ Cake\ View \ Helper \ PaginatorHelper.php, строка 695] Примечание (8): неопределенный индекс: count [CORE \ Cake \ View \ Helper \ PaginatorHelper.php, строка 696] Страница 1 из 1, где показаны записи из общего числа.

Это мой код в контроллере: public function filterTrails () {

    if (isset($this->request->data['AuditFilter'])) {
        $keywords = $this->request->data['AuditFilter']['keyword'];
        $date_from = $this->request->data['AuditFilter']['date_from'];
        $date_to = $this->request->data['AuditFilter']['date_to'];

        if (!empty($date_from && !empty($date_to))){
            $this->paginate = array(
                'fields' => 'audit.event, audit.model, audit.created, audit.ip_address, auditchange.modifiedby,auditchange.column_name , auditchange.old_value, auditchange.new_value',
                'joins' => array(
                    array(
                        'table' => 'audit_changes', 'alias' => 'auditchange', 'type' => 'Inner', 'conditions' => 'auditchange.audit_id = audit.id'
                    )
                ),
                'conditions' => array(
                    'or' => array(
                        'Audit.event LIKE' => "%$keywords%" ,
                        'Audit.ip_address LIKE ' => "%$keywords%" ,
                        'Audit.model LIKE' => "%$keywords%"),
                    'AND' => array('Audit.created BETWEEN ? and ?' => array($date_from, $date_to))
                )
            );
        } else {
            $this->paginate = array(
                'fields' => 'audit.event, audit.model, audit.created, audit.ip_address, auditchange.modifiedby,auditchange.column_name , auditchange.old_value, auditchange.new_value',
                'joins' => array(
                    array(
                        'table' => 'audit_changes', 'alias' => 'auditchange', 'type' => 'Inner', 'conditions' => 'auditchange.audit_id = audit.id'
                    )
                ),
                'conditions' => array(
                    'or' => array(
                        'Audit.event LIKE' => "%$keywords%",
                        'Audit.ip_address LIKE ' => "%$keywords%" ,
                        'Audit.model' => "%$keywords%",
                        'auditchange.modifiedby LIKE' => "%$keywords%")
                )
            );

        }

        $data = $this->Paginator->paginate('Audit');
        $this->set('auditLog', $data);

Тогда, на мой взгляд, этоэто то, что я сделал:

<?php $this->Paginator->options(array('url' => $this->passedArgs)); ?>
                        <table class="table table-striped table-bordered dataTable"
                               role="grid" aria-describedby="basicExample_inf">
                            <thead>
                            <tr role="row">
                                <th style="width: 79.667px;"><?php echo $this->Paginator->sort('ip_address', 'Origin'); ?></th>
                                <th style="width: 79.3333px;"><?php echo $this->Paginator->sort('modifiedby','User'); ?></th>
                                <th style="width: 79.3333px;"><?php echo $this->Paginator->sort('created', 'Creation Time'); ?></th>
                                <th style="width: 100.667px;"><?php echo $this->Paginator->sort('event', 'Operation'); ?></th>
                                <th style="width: 100.667px;"><?php echo $this->Paginator->sort('model'); ?></th>
                                <th style="width: 100.667px;"><?php echo $this->Paginator->sort('column_name'); ?></th>
                                <!--  <th style="width: 50.333px;"><?php /*echo $this->Paginator->sort('old_value'); */?></th>
                                <th style="width: 50.333px;"><?php /*echo $this->Paginator->sort('new_value'); */?></th>-->
                            </tr>
                            </thead>
                            <tbody>
                            <?php foreach ($auditLog as $audit):; ?>
                                <tr>
                                    <td><?php echo $audit['Audit']['ip_address']; ?></td>
                                    <td><?php echo $audit['AuditChange'][0]['modifiedby']; ?></td>
                                    <td><?php echo $audit['Audit']['created']; ?></td>
                                    <td><?php echo $audit['Audit']['event']; ?></td>
                                    <td><?php echo $audit['Audit']['model']; ?></td>
                                    <td><?php echo $audit['AuditChange'][0]['column_name']; ?></td>
                                    <!--<td style="width: 50.333px;"><?php /*echo $audit['AuditChange'][0]['old_value']; */?></td>
                                    <td style="width: 50.333px;"><?php /*echo $audit['AuditChange'][0]['new_value']; */?></td>-->
                                </tr>
                            <?php endforeach; ?>
                            </tbody>
                        </table>
                        <div class="row">
                            <div class="col-sm-12 col-md-5">
                                <div class="dataTables_info" id="basicExample_info" role="status"
                                     aria-live="polite"><?php
                                    echo $this->Paginator->counter(array('format' => __('Page {:page} of {:pages}, showing {:current} records out of {:count} total.')
                                    ));
                                    ?>
                                </div>
                            </div>
                            <div class="col-sm-12 col-md-7">
                                <div class="dataTables_paginate paging_simple_numbers" id="basicExample_paginate">
                                    <ul class="pagination">
                                        <ul class="pagination justify-content-end">
                                            <?php
                                            echo $this->Paginator->prev('<i class = "fa fa-angle-double-left"> Previous</i>', array('escape' => false, 'tag' => 'li'), null, array('escape' => false, 'tag' => 'li', 'class' => 'page-item disabled', 'disabledTag' => 'a'));
                                            echo $this->Paginator->numbers(array('separator' => '', 'currentTag' => 'a', 'currentClass' => 'active', 'tag' => 'li', 'first' => 1));
                                            echo $this->Paginator->next('Next <i class = "fa fa-angle-double-right"></i>', array('escape' => false, 'tag' => 'li', 'currentClass' => 'disabled'), null, array('escape' => false, 'tag' => 'li', 'class' => 'disabled', 'disabledTag' => 'a', 'style' => 'display: inline-block; border: 1px solid #ddd;padding: 0.5em 1em'));
                                            ?>
                                        </ul>


                                    </ul>
                                </div>
                            </div>
                        </div>

Может кто-нибудь помочь, где я иду не так?

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