CakePHP 3.6.14: таблица начальной загрузки сортируется по html, а не по тексту - PullRequest
0 голосов
/ 21 февраля 2019

Я использую bootstrap table с cakephp.Содержимое каждой ячейки является ссылкой, поэтому для отображения текста, а не HTML-кода, я использую data-escape="false" в теге <table>.

Но теперь, когда я пытаюсь сортировать, сортировкане работает должным образом, так как сортирует строки на основе HTML-кода ссылки, а не отображаемого текста.

Это моя таблица:

<table class="table responsive" id="table" data-toggle="table"
    data-search="true"
    data-filter-control="true" 
    data-show-export="true"
    data-click-to-select="true"
    data-toolbar="#toolbar"
    data-escape="false">
    <thead>
        <tr>
              <th data-field="name" data-filter-control="input" data-sortable="true" scope="col"><?= __('Title') ?></th>
        </tr>
    </thead>
    <tbody>
       <?php foreach ($tasks as $task):?>
           <tr>
              <td><?= $task->has('name') ? $this->Html->link($task->name, ['controller' => 'Tasks', 'action' => 'edit', $task->id]) : '' ?></td>
           </tr>
       <?php endforeach; ?>
   </tbody>
</table>

1 Ответ

0 голосов
/ 21 февраля 2019

Вы можете использовать свой собственный сортировщик javascript с атрибутом «data-sorter».

<th data-field="name" data-filter-control="input" data-sortable="true" data-sorter="linksSorter" scope="col"><?= __('Title') ?></th>

Тогда, например:

function linksSorter(a, b) {
    var a = $(a).text();
    var b = $(b).text();
    if (a < b) return -1;
    if (a > b) return 1;

    return 0;
}
...